struts2使用json返回对象和列表案例.docx
《struts2使用json返回对象和列表案例.docx》由会员分享,可在线阅读,更多相关《struts2使用json返回对象和列表案例.docx(26页珍藏版)》请在冰豆网上搜索。
struts2使用json返回对象和列表案例
返回对象:
JSON是一个插件,它允许我们在JavaScript中异步调用Action,它提供了一个json的返回结果类型(ResultType),只要为Action指定类型为
json返回结果类型,那么这个响应结果不需要返回给任何视图层,JSON会将Action里的状态信息序列化为JSON指定格式的数据,并将该数据返回
给JAVASCRIPT,这样可以完成AJAX的应用交互.
要应用JSON插件,首先需要到
下载最新JSON插件,我这里下载的是jsonplugin-
0.33.jar,将该文件拷到WEB工程的LIB目录,当然还需要下载Struts2类库,可以到http:
//struts.apache.org/download.cgi#struts2014
这里去下载,下载完后解压缩,将JAR拷到WEB工程的LIB目录,不能少于以下几个JAR文件(struts2-api-2.0.5.jar、struts2-core-2.0.5.jar、
ognl-2.6.9.jar、xwork-2.0.0.jar、commons-logging-1.1.jar、freemarker-2.3.8.jar,具体文件名视版本而定),接下来我们可以写个应用
来试验,本例程分为二步来写,第一步实现返回一个结果对象,第二步实现返回一个结果列表,首先来看下返回结果对象的实现.
我们需要先建立一个JavaBean为值对象,用来将用户的基本数据封装进去,该实体在结果对象和结果列表中都会使用到
Users.java代码如下:
Java代码
1.package com.jsontostruts2.vo;
2.
3./**
4. *
5. * 创 建 人:
ChenTao
6. *
7. * 创建日期:
2009-5-18 下午05:
24:
48
8. *
9. */
10.public class Users {
11.
12. private Integer userId;
13.
14. private String userName;
15.
16. private String sex;
17.
18. public Users() {
19.
20. }
21. // get... set.... 略......
22.}
packagecom.jsontostruts2.vo;
/**
*
*创建人:
ChenTao
*
*创建日期:
2009-5-18下午05:
24:
48
*
*/
publicclassUsers{
privateIntegeruserId;
privateStringuserName;
privateStringsex;
publicUsers(){
}
//get...set....略......
}
实现UserAction.java源码如下:
Java代码
1.package com.jsontostruts2.action;
2.
3.import com.googlecode.jsonplugin.annotations.JSON;
4.import com.jsontostruts2.vo.Users;
5.import com.opensymphony.xwork2.ActionSupport;
6.
7./**
8. *
9. * 创 建 人:
ChenTao
10. *
11. * 创建日期:
2009-5-18 下午05:
22:
50
12. *
13. */
14.@SuppressWarnings("serial")
15.public class UserAction extends ActionSupport {
16.
17. private Users users;
18.
19. @JSON(name="USER")
20. public Users getUsers() {
21. return users;
22. }
23.
24. public void setUsers(Users users) {
25. this.users = users;
26. }
27.
28. @Override
29. public String execute() throws Exception {
30. users = new Users();
31. users.setUserId
(1);
32. users.setUserName("ctojxzsycztao");
33. users.setSex("男人");
34. return SUCCESS;
35. }
36.
37.}
packagecom.jsontostruts2.action;
importcom.googlecode.jsonplugin.annotations.JSON;
importcom.jsontostruts2.vo.Users;
importcom.opensymphony.xwork2.ActionSupport;
/**
*
*创建人:
ChenTao
*
*创建日期:
2009-5-18下午05:
22:
50
*
*/
@SuppressWarnings("serial")
publicclassUserActionextendsActionSupport{
privateUsersusers;
@JSON(name="USER")
publicUsersgetUsers(){
returnusers;
}
publicvoidsetUsers(Usersusers){
this.users=users;
}
@Override
publicStringexecute()throwsException{
users=newUsers();
users.setUserId
(1);
users.setUserName("ctojxzsycztao");
users.setSex("男人");
returnSUCCESS;
}
}
接下来我们需要配置struts.xml文件,为了在现下面不再重复写该文件,这里我将结果对象和列表的请求控制一并贴上来,文件内容:
Xml代码
1.
xml version="1.0" encoding="UTF-8"?
>
2.
DOCTYPE struts PUBLIC
3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4. "http:
//struts.apache.org/dtds/struts-2.0.dtd">
5.
6.
7.
-- 注意这里扩展不再是 struts-default,而是 json-default -->
8.
9.
-- 返回结果类型为 json -->
10.
11.
12.
13.
-- 该action在返回列表时添加进来的 -->
14.
15.
16.
17.
18.
19.
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
--注意这里扩展不再是struts-default,而是json-default-->
--返回结果类型为json-->
--该action在返回列表时添加进来的-->
能后创建web.xml和userjson.jsp:
Xml代码
1.web.xml :
2.
xml version="1.0" encoding="UTF-8"?
>
3.4. xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
5. xsi:
schemaLocation="
6.
7.
8.
9. Struts2
10.
11. org.apache.struts2.dispatcher.FilterDispatcher
12.
13.
14.
15. Struts2
16. *.action
17.
18.
19. Struts2
20. *.jsp
21.
22.
23.
24. index.jsp
25.
26.
web.xml:
xmlversion="1.0"encoding="UTF-8"?
>
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
Struts2
org.apache.struts2.dispatcher.FilterDispatcher
Struts2
*.action
Struts2
*.jsp
index.jsp
userjson.jsp:
Html代码
1.<%@ page language="java" contentType="text/html;charset=UTF-8"%>
2.
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3.
4.
5.
json 返回对象处理 6.
43.
44.
45.
46.
47.
48.
返回列表:
接来实现下返回列表的做法,当然与返回对象会有所不同,我们需要将一个List对象转换为一个JSON规范的字符串,能后发送给客户端的JS,
首先建立一个将List转换为指定字符串的工具类,该工具是在一个无意间从网上看到就拿来用了,经过少许修改,为了减少代码行数我将只贴
出适用于本示例的代码:
JsonUtil.java:
Java代码
1.package com.jsontostruts2.util;
2.
3.import java.beans.IntrospectionException;
4.import java.beans.Introspector;
5.import java.beans.PropertyDescriptor;
6.import java.util.List;
7.
8./**
9. *
10. * @author ChenTao
11. *
12. * @Date 2009-5-18 下午05:
47:
27
13. *
14. */
15.public class JsonUtil {
16.
17. /**
18. * @param object
19. * 任意对象
20. * @return java.lang.String
21. */
22. public static String objectToJson(Object object) {
23. StringBuilder json = new StringBuilder();
24. if (object == null) {
25. json.append("\"\"");
26. } else if (object instanceof String || object instanceof Integer) {
27. json.append("\"").append((String)object).append("\"");
28. } else {
29. json.append(beanToJson(object));
30. }
31. return json.toString();
32. }
33.
34. /**
35. * 功能描述:
传入任意一个 javabean 对象生成一个指定规格的字符串
36. *
37. * @param bean
38. * bean对象
39. * @return String
40. */
41. public s