日期:2014-05-16  浏览次数:20428 次

struts2.1.8.1+jquery1.4.2返回json数据

1、引入包(本文中的包全部引自struts-2.1.8.1\lib):

struts2-json-plugin-2.1.8.1.jar
json-lib-2.1.jar
commons-collections-3.2.jar
commons-beanutils-1.7.0.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
ezmorph-1.0.3.jar
这7个包是返回json形式的数据必须的。因为json大量引用了Apache commons的包,所以要加入4个,commons包,除了commons的包外,还需要引入一个 ezmorph的包。最后加入struts2必须的6个包:

struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
ognl-2.7.3.jar
freemarker-2.3.15.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
2、后台:

1) Userinfo实体类代码 public class UserInfo implements Serializable {??
??? private int userId;?
??? private String userName;
??? private String password;
??? get set方法略
}


2) Action类 public class TestAction extends ActionSupport {
??? private String message;??????????????? //使用json返回单个值
??? private UserInfo userInfo;????????????? //使用json返回对象
??? private List userInfosList;???? //使用josn返回List对象
??? get set方法略
?? /*返回单个值*/??
?? public String returnMsg(){??
??????? this.message = "成功返回单个值";?
??????? return SUCCESS;
?? }?
?? /*返回UserInfo对象*/??
?? public String returnUser(){
?????? userInfo = new UserInfo();
?????? userInfo.setUserId(10000);
?????? userInfo.setUserName("刘栋");
?????? userInfo.setPassword("123456");
?????? return SUCCESS;
?? }
? /*返回List对象*/??
?? public String returnList(){??
?????? userInfosList = new ArrayList<UserInfo>();
?????? UserInfo u1 = new UserInfo();
?????? u1.setUserId(10000);??
?????? u1.setUserName("张三");
?????? u1.setPassword("111111");
?????? UserInfo u2 = new UserInfo();
?????? u2.setUserId(10001);??
?????? u2.setUserName("李四");??
?????? u2.setPassword("222222");
?????? userInfosList.add(u1);
?????? userInfosList.add(u2);?
?????? return SUCCESS;??
?? }??
}


3) struts.xml(必须继承json-default、json-default继承自struts-default) <package name="default" namespace="/json" extends="json-default">
<action name="returnMsg" class="com.testAction " method="returnMsg">??
<result? name="success" type="json">
<param name="root">validate</param>
</result>??
</action>
<action name="returnUser "
class="com.testAction " method="returnUser ">
<result? name="success" type="json">
<param name="includeProperties">
userInfo\.userId,userInfo\.userName,userInfo\.password
</param>
</result>??
</action>
<action name="returnList" class="com.testAction "
method="returnList">??
<result? name="success" type="json">
<param name="includeProperties">
userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password
</param>
</result>??
</action>
</package>


3、前台:

1) 页面引入jquery-1.4.2.js
2) 代码如下: <script language="javascript">
?? function getMsg(){
????? $.ajax({
???????? url:'json/returnMsg.action',
???????? type:'post',
???????? dataType:'json',
???????? success:function(data){
??????? $("#result").html(data.message);
???????? }
????? });
??? }

?? function getUser(){
????? $("# result ").html("");?
????? $.ajax({
???????? url:'json/returnUser.action',
???????? type:'post',
???????? dataType:'json',
???????? success:function(data){
??????? $("#result").append("用户ID:"+data.userInfo.userId+"")
??????????????????????? .append("用户名:"+data.userInfo.userName+"")
??????????????????????? .append("密码:"+data.userInfo.password+"");
???????? }
????? });
??? }

?? function getUserList(){
????? $("# result ").html("");??
????? $.ajax({
???????? url:'json/returnList.action',
???????? type:'post',
???????? dataType:'json',
???????? success:function(data){