- Struts2+JQuery+JSON实现异步交互,包括从后台获得单个值、对象、List和Map数据并从前台的表达中获取值把值进行序列化通过JQuery的$.ajax({})传到后台和后台的对象进行绑定。
-
- 第一步:在MyEclipse中创建JavaWeb工厂并把Struts2 和 json的jar包添加到工程中添加完成后的工程图是:
-
-
-
- 第二步:创建后台:
-
- 1. UserInfo实体类:
-
-
-
- Userinfo实体类代码
-
-
- package struts2jsonjquery.test.entity;
-
- import java.io.Serializable;
-
-
-
-
-
-
-
- public class UserInfo implements Serializable {
-
- private static final long serialVersionUID = 3952189513312630860L;
-
- private int userId;
- private String userName;
- private String password;
- public int getUserId() {
- return userId;
- }
- public void setUserId(int userId) {
- this.userId = userId;
- }
- public String getUserName() {
- return userName;
- }
-
- Action类
-
- Action类代码
-
-
- package struts2jsonjquery.test.action;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- import struts2jsonjquery.test.entity.UserInfo;
-
- import com.opensymphony.xwork2.ActionSupport;
-
- public class JsonJqueryStruts2Action extends ActionSupport {
-
- private static final long serialVersionUID = 3518833679938898354L;
-
- private String message;
- private UserInfo userInfo;
- private List<UserInfo> userInfosList;
- private Map<String,UserInfo> userInfosMap;
-
- public String getMessage() {
- return message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- public UserInfo getUserInfo() {
- return userInfo;
- }
- public void setUserInfo(UserInfo userInfo) {
- this.userInfo = userInfo;
- }
- public List<UserInfo> getUserInfosList() {
- return userInfosList;
- }
- public void setUserInfosList(List<UserInfo> userInfosList) {
- this.userInfosList = userInfosList;
- }
- public Map<String, UserInfo> getUserInfosMap() {
- return userInfosMap;
- }
- public void setUserInfosMap(Map<String, UserInfo> userInfosMap) {
- this.userInfosMap = userInfosMap;
- }
-
-
-
-
-
-
- public String returnMessage(){
- this.message = "成功返回单个值";
- return "message";
- }
-
-
-
-
-
-
- public String returnUserInfo(){
- userInfo = new UserInfo();
- userInfo.setUserId(10000);
- userInfo.setUserName("张三");
- userInfo.setPassword("000000");
- return "userInfo";
- }
-
-
-
-
-
-
- public String returnList(){
- userInfosList = new ArrayList<UserInfo>();
- UserInfo u1 = new UserInfo();
- u1.setUserId(10000);
- u1.setUserName("张三");
- u1.setPassword("000000");
- UserInfo u2 = new UserInfo();
- u2.setUserId(10001);
- u2.setUserName("李四");
- u2.setPassword("111111");
- UserInfo u3 = new UserInfo();
- u3.setUserId(10002);
- u3.setUserName("王五");
- u3.setPassword("222222");
- UserInfo u4 = new UserInfo();
- u4.setUserId(10003);
- u4.setUserName("赵六");
- u4.setPassword("333333");
- userInfosList.add(u1);
- userInfosList.add(u2);
- userInfosList.add(u3);
- userInfosList.add(u4);
- }
- 3. struts.xml
-
-
-
- Struts.xml代码
-
-
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts./dtds/struts-2.0.dtd">
-
- <struts>
-
- <package name="default" namespace="/" extends="json-default">
- <action name="jsontest" class="struts2jsonjquery.test.action.JsonJqueryStruts2Action">
- <!-- 返回单个值的result -->
- <result name="message" type="json"></result>
- <!-- 返回UserInfo对象的 -->
- <result name="userInfo" type="json"></result>
- <!-- 返回List对象的 -->
- <result name="list" type="json"></result>
- <!-- 返回Map对象的 -->
- <result name="map" type="json"></result>
- </action>
- </package>
- </struts>
- 前台:
-
- 1. index.jsp
-
- Html代码
-
-
- <%@ page language="java" pageEncoding="GBK"%>
- <%
- String path = request.getContextPath();
- %>
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
-
- <title>Struts2+JQuery+JSON</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <mce:script type="text/javascript" src="<%=path %><!--
- /js/jquery.js">
-
- <mce:script type="text/javascript" src="<%=path %><!--
- /js/json.js">
-
- </head>
-
- <body>
- <input id="getMessage" type="button" value="获取单个值"/>
- <input id="getUserInfo" type="button" value="获取UserInfo对象"/>
- <input id="getList" type="button" value="获取List对象"/>
- <input id="getMap" type="button" value="获取Map对象"/>
- <br>
- <br>
- <br>
- <!-- 要显示信息的层 -->
- <div id="message"></div>
- <form>
- 用户ID:<input name="userInfo.userId" type="text"/><br/>
- 用户名:<input name="userInfo.userName" type="text"/><br/>
- 密 码:<input name="userInfo.password" type="text"/><br>
- <input id="regRe" type="button" value="注册"/>
- </form>
- </body>
- </html>
- json.js
-
-
-
- Js代码
-
-
-
- $(document).ready(function(){
-
- $("#getMessage").click(function(){
- $.getJSON("jsontest!returnMessage.action",function(data){
-
- $("#message").html("<font color='red'>"+data.message+"</font>");
- });
- });
-
- $("#getUserInfo").click(function(){
- $.getJSON("jsontest!returnUserInfo.action",function(data){
-
- $("#message").html("");
-
-
- $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")
- .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")
- .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")
- });
- });
-
- $("#getList").click(function(){
- $.getJSON("jsontest!returnList.action",function(data){
-
- $("#message").html("");
-
-
- $.each(data.userInfosList,function(i,value){
- $("#message").append("<div>第"+(i+1)+"个用户:</div>")
- .append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")
- .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")
- .append("<div><font color='red'>密码:"+value.password+"</font></div>");
- });
- });
- });
-
- $("#getMap").click(function(){
- $.getJSON("jsontest!returnMap.action",function(data){
-
- $("#message").html("");
-
-
-
- $.each(data.userInfosMap,function(key,value){
- $("#message").append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")
- .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")
- .append("<div><font color='red'>密码:"+value.password+"</font></div>");
- });
- });
- });
-
- $("#regRe").click(function(){
-
- var params = $("form").serialize();
-
- $.ajax({
- url:"jsontest!gainUserInfo.action",
- type:"POST",
- data:params,
- dataType:"json",
- success:function(data){
-
- $("#message").html("");
-
-
- $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")
- .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")
- .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")
- }
- 注意:JSON插件会把所有包含getter方法的属性都序列化到返回结果中,所以Action中的其他execute方法都不要把名
- 字加get前缀。 });
-
- });
- });
|