javascript中用jquery做ajax读取sturts2中action的返回信信息的步骤
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>
4)web.xml的编写
-<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class>
</filter> -
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5)前段jsp的的编写
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'JsonTest.jsp' starting page</title>
</head>
</script>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//通过选择器获得它的单机事件
$("#json").click(function(){
var str="";
//用getJson做ajax 返回一个json对象
$.getJSON("returnList.action", function(json){
//通过each方法迭代json对象信息 其中参数i表示下表 n表示对象
$.each(json.userInfosList, function(i, n){
str=str+n.userName+",";
});
str=str.substring(0,str.length-1);
$("#test").text(str);
//也可以通过下标直接输出
//alert("JSON Data: " + json.userInfosList[0].userName);
});
});
});
</script>
<body>
<input type="button" value="结合json返回集合对象" id="json" />
<div id="test">显示返回数据的</div>
<s:debug>
</s:debug>
</body>
</html>
更多链接>>:http://s.click.taobao.com/t?e=zGU34CA7K%2BPkqB07S4%2FK0CFcRfH0GoT805sipKvKrFOHaXUl3KqVM8joCF2xukRXxDUGfrZhdDvBjquprSD8jw%2Ff9VHgGmLkQb4wcbsG3HtUkg%3D%3D