日期:2014-05-16 浏览次数:20445 次
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){ <