struts2使用json返回对象和列表案例.docx

上传人:b****7 文档编号:9645055 上传时间:2023-02-05 格式:DOCX 页数:26 大小:29.56KB
下载 相关 举报
struts2使用json返回对象和列表案例.docx_第1页
第1页 / 共26页
struts2使用json返回对象和列表案例.docx_第2页
第2页 / 共26页
struts2使用json返回对象和列表案例.docx_第3页
第3页 / 共26页
struts2使用json返回对象和列表案例.docx_第4页
第4页 / 共26页
struts2使用json返回对象和列表案例.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

struts2使用json返回对象和列表案例.docx

《struts2使用json返回对象和列表案例.docx》由会员分享,可在线阅读,更多相关《struts2使用json返回对象和列表案例.docx(26页珍藏版)》请在冰豆网上搜索。

struts2使用json返回对象和列表案例.docx

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.      

7.        var xmlHttp = false;  

8.        try{  

9.            xmlHttp = new ActiveXObject("msxml2.XMLHTTP");  

10.        }catch(e1){  

11.            try{  

12.                xmlHttp = new ActiveXObject("microsoft.XMLHTTP");  

13.            }catch(e2){  

14.                try{  

15.                    xmlHttp = new XMLHttpRequest();  

16.                }catch(e3){  

17.                    xmlHttp = false;  

18.                }  

19.            }  

20.        }  

21.        if(!

xmlHttp){  

22.            alert("create xmlHttpRequest fail");  

23.        }  

24.        function ){  

25.            xmlHttp.onreadystatechange = function(){  

26.                if(xmlHttp.readyState == 4) {  

27.                // 将 JSON 对象转换为JSON字符串,需要注意调用eval函数时必须使用"("和")"将JSON字符串括起来,否  

28.  

29.则会出错  

30.                var userObj = eval('(' + xmlHttp.responseText + ')');  

31.                var userStr = "";  

32.                    userStr += 'userId' + userObj.USER.userId + '';  

33.                    userStr += ('userName' + userObj.USER.userName + '');  

34.                    userStr += ('sex' + userObj.USER.sex + '');  

35.                    userStr += "";  

36.                    document.getElementById('jsonDiv').innerHTML = userStr;  

37.                }  

38.            }  

39.            xmlHttp.open("POST","userJson.action",true);  

40.            xmlHttp.send(null);  

41.        }  

42.      

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1