一、 添加jar包
struts2-json-plugin-2.3.4.jar
json-lib-2.3-jdk15.jar
ezmorph-1.0.6.jar
二、 写一个AjaxCheckAction异步加载类
//定义一个User的成员变量
//给该变量添加getter和setter方法
//执行业务操作,将响应数据赋值给该成员变量
public class AjaxCheckAction {
private InputStream inputStream;
private User user;
public String checkJson() {
user = new User();
user.setUserName("李白");
user.setAge(18);
return "success";
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
三、 在struts.xml配置文件中配置action
<package name="json_default" namespace="/" extends="json-default">
<action name="checkJson" class="action.AjaxCheckAction" method="checkJson">
<result type="json">
<param name="root">user</param>
<param name="includeProperties">userName</param>
<param name="excludeProperties">age</param>
<param name="excludeNullProperties">true</param>
</result>
</action>
</package>
四、 在JSP页面:一个用户名输入框,一个返回信息(用户名异步提醒)框
<s:text name="userName"></s:text>:<s:textfield onblur="check(this);" name="user.userName"></s:textfield> <div id="msg" style="display:inline"></div>
五、 在/js文件夹下放入jQuery插件
六、 在JSP页面写ajax方法
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
function check(obj){
var userName=$(obj).val();
$.get("checkJson.action","userName="+userName,function(returnData){ $("#msg").html(returnData.userName);
});
}
</script>
七、 通过JSON传递List
// AjaxCheckAction类
private List<User> ulist = new ArrayList<User>();
public String checkJson() {
user = new User();
user.setUserName("李白");
user.setAge(18);
ulist.add(user);
user2 = new User();
user2.setUserName("杜甫");
user2.setAge(21);
ulist.add(user2);
return "success";
}
//JSP页面JS与JSON
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
function check(obj){
var poemer="";
var userName=$(obj).val();
$.get("checkJson.action","userName="+userName,function(returnData){
$.each(returnData,function(i,user){
poemer=poemer+user.userName+" : "+user.age+" ; ";
});
$("#msg").html(poemer);
});
}
</script>
八、 通过JSON传递List时对List中对象的属性进行筛选
Struts.xml中用正则表达式挑选返回结果中的ulist中的属性
<package name="json_default" namespace="/" extends="json-default">
<action name="checkJson" class="action.AjaxCheckAction" method="checkJson">
<result type="json">
<!-- <param name="root">ulist</param> -->
<param name="includeProperties">^ulist\[\d+\]\.userName$</param>
<!-- <param name="excludeProperties">^ulist\[\d+\]\.age$</param> -->
<param name="excludeNullProperties">true</param>
</result>
</action>
</package>
Index.jsp 先从结果中选中ulist,再取对象属性
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
function check(obj){
var poemer="";
var userName=$(obj).val();
$.get("checkJson.action","userName="+userName,function(returnData){
/* $("#msg").html(returnData); */
$.each(returnData.ulist,function(i,user){
poemer=poemer+user.userName+" : "+user.age+" ; ";
});
$("#msg").html(poemer);
});
}
</script>