分享

struts2+json+jquery

 taylor_liu1 2011-04-22
  1. Struts2+JQuery+JSON实现异步交互,包括从后台获得单个值、对象、List和Map数据并从前台的表达中获取值把值进行序列化通过JQuery的$.ajax({})传到后台和后台的对象进行绑定。  
  2.   
  3. 第一步:在MyEclipse中创建JavaWeb工厂并把Struts2 和 json的jar包添加到工程中添加完成后的工程图是:  
  4.   
  5.    
  6.   
  7. 第二步:创建后台:  
  8.   
  9.   1. UserInfo实体类:  
  10.   
  11.     
  12.   
  13. Userinfo实体类代码   
  14.   
  15.   
  16. package struts2jsonjquery.test.entity;      
  17.      
  18. import java.io.Serializable;      
  19. /**     
  20.  * <p>     
  21.  *  用户实体类     
  22.  * </p>     
  23.  * @author 朱延伟     
  24.  *     
  25.  */      
  26. public class UserInfo implements Serializable {      
  27.      
  28.     private static final long serialVersionUID = 3952189513312630860L;      
  29.           
  30.     private int userId;      
  31.     private String userName;      
  32.     private String password;      
  33.     public int getUserId() {      
  34.         return userId;      
  35.     }      
  36.     public void setUserId(int userId) {      
  37.         this.userId = userId;      
  38.     }      
  39.     public String getUserName() {      
  40.         return userName;      
  41.     }     
  42.   
  43.  Action类  
  44.   
  45. Action类代码   
  46.   
  47.   
  48. package struts2jsonjquery.test.action;      
  49.      
  50. import java.util.ArrayList;      
  51. import java.util.HashMap;      
  52. import java.util.List;      
  53. import java.util.Map;      
  54.      
  55. import struts2jsonjquery.test.entity.UserInfo;      
  56.      
  57. import com.opensymphony.xwork2.ActionSupport;      
  58.      
  59. public class JsonJqueryStruts2Action extends ActionSupport {      
  60.      
  61.     private static final long serialVersionUID = 3518833679938898354L;      
  62.           
  63.     private String message;     //使用json返回单个值      
  64.     private UserInfo userInfo;      //使用json返回对象      
  65.     private List<UserInfo> userInfosList;     //使用josn返回List对象      
  66.     private Map<String,UserInfo> userInfosMap;    //使用json返回Map对象      
  67.     //为上面的的属性提供get,Set方法      
  68.     public String getMessage() {      
  69.         return message;      
  70.     }      
  71.     public void setMessage(String message) {      
  72.         this.message = message;      
  73.     }      
  74.     public UserInfo getUserInfo() {      
  75.         return userInfo;      
  76.     }      
  77.     public void setUserInfo(UserInfo userInfo) {      
  78.         this.userInfo = userInfo;      
  79.     }      
  80.     public List<UserInfo> getUserInfosList() {      
  81.         return userInfosList;      
  82.     }      
  83.     public void setUserInfosList(List<UserInfo> userInfosList) {      
  84.         this.userInfosList = userInfosList;      
  85.     }      
  86.     public Map<String, UserInfo> getUserInfosMap() {      
  87.         return userInfosMap;      
  88.     }      
  89.     public void setUserInfosMap(Map<String, UserInfo> userInfosMap) {      
  90.         this.userInfosMap = userInfosMap;      
  91.     }      
  92.     /**     
  93.      * <p>     
  94.      *  返回单个值     
  95.      * <p>     
  96.      * @return     
  97.      */      
  98.     public String returnMessage(){      
  99.         this.message = "成功返回单个值";      
  100.         return "message";      
  101.     }      
  102.     /**     
  103.      * <p>     
  104.      *  返回UserInfo对象     
  105.      * </p>     
  106.      * @return     
  107.      */      
  108.     public String returnUserInfo(){      
  109.         userInfo = new UserInfo();      
  110.         userInfo.setUserId(10000);      
  111.         userInfo.setUserName("张三");      
  112.         userInfo.setPassword("000000");      
  113.         return "userInfo";      
  114.     }      
  115.     /**     
  116.      * <p>     
  117.      *  返回List对象     
  118.      * </p>     
  119.      * @return     
  120.      */      
  121.     public String returnList(){      
  122.         userInfosList = new ArrayList<UserInfo>();      
  123.         UserInfo u1 = new UserInfo();      
  124.         u1.setUserId(10000);      
  125.         u1.setUserName("张三");      
  126.         u1.setPassword("000000");      
  127.         UserInfo u2 = new UserInfo();      
  128.         u2.setUserId(10001);      
  129.         u2.setUserName("李四");      
  130.         u2.setPassword("111111");      
  131.         UserInfo u3 = new UserInfo();      
  132.         u3.setUserId(10002);      
  133.         u3.setUserName("王五");      
  134.         u3.setPassword("222222");      
  135.         UserInfo u4 = new UserInfo();      
  136.         u4.setUserId(10003);      
  137.         u4.setUserName("赵六");      
  138.         u4.setPassword("333333");      
  139.         userInfosList.add(u1);      
  140.         userInfosList.add(u2);      
  141.         userInfosList.add(u3);      
  142.         userInfosList.add(u4);      
  143.     }     
  144. 3.  struts.xml  
  145.   
  146.    
  147.   
  148. Struts.xml代码   
  149.   
  150.   
  151. <?xml version="1.0" encoding="UTF-8" ?>      
  152. <!DOCTYPE struts PUBLIC      
  153.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     
  154.     "http://struts./dtds/struts-2.0.dtd">      
  155.      
  156. <struts>      
  157.      
  158.     <package name="default" namespace="/" extends="json-default">      
  159.         <action name="jsontest" class="struts2jsonjquery.test.action.JsonJqueryStruts2Action">      
  160.             <!-- 返回单个值的result -->      
  161.             <result name="message" type="json"></result>      
  162.             <!-- 返回UserInfo对象的 -->      
  163.             <result name="userInfo" type="json"></result>      
  164.             <!-- 返回List对象的 -->      
  165.             <result name="list" type="json"></result>      
  166.             <!-- 返回Map对象的 -->      
  167.             <result name="map" type="json"></result>      
  168.         </action>      
  169.     </package>      
  170. </struts>     
  171. 前台:  
  172.   
  173. 1.  index.jsp  
  174.   
  175. Html代码   
  176.   
  177.   
  178. <%@ page language="java" pageEncoding="GBK"%>     
  179. <%      
  180.     String path = request.getContextPath();      
  181. %>     
  182.      
  183. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">     
  184. <html>     
  185.   <head>     
  186.           
  187.     <title>Struts2+JQuery+JSON</title>     
  188.     <meta http-equiv="pragma" content="no-cache">     
  189.     <meta http-equiv="cache-control" content="no-cache">     
  190.     <meta http-equiv="expires" content="0">          
  191.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">     
  192.     <meta http-equiv="description" content="This is my page">     
  193.     <mce:script type="text/javascript" src="<%=path %><!--  
  194. /js/jquery.js">  
  195. // --></mce:script>     
  196.     <mce:script type="text/javascript" src="<%=path %><!--  
  197. /js/json.js">  
  198. // --></mce:script>     
  199.   </head>     
  200.         
  201.   <body>     
  202.     <input id="getMessage" type="button" value="获取单个值"/>        
  203.     <input id="getUserInfo" type="button" value="获取UserInfo对象"/>        
  204.     <input id="getList" type="button" value="获取List对象"/>        
  205.     <input id="getMap" type="button" value="获取Map对象"/>        
  206.     <br>     
  207.     <br>     
  208.     <br>     
  209.     <!-- 要显示信息的层 -->     
  210.     <div id="message"></div>     
  211.     <form>     
  212.         用户ID:<input name="userInfo.userId" type="text"/><br/>     
  213.         用户名:<input name="userInfo.userName" type="text"/><br/>     
  214.         密   码:<input name="userInfo.password" type="text"/><br>     
  215.         <input id="regRe" type="button" value="注册"/>     
  216.     </form>     
  217.   </body>     
  218. </html>     
  219.  json.js  
  220.   
  221.     
  222.   
  223. Js代码   
  224.   
  225.   
  226. //初始加载页面时      
  227. $(document).ready(function(){      
  228.  //为获取单个值的按钮注册鼠标单击事件      
  229.  $("#getMessage").click(function(){      
  230.   $.getJSON("jsontest!returnMessage.action",function(data){      
  231.    //通过.操作符可以从data.message中获得Action中message的值      
  232.    $("#message").html("<font color='red'>"+data.message+"</font>");      
  233.   });      
  234.  });      
  235.  //为获取UserInfo对象按钮添加鼠标单击事件      
  236.  $("#getUserInfo").click(function(){      
  237.   $.getJSON("jsontest!returnUserInfo.action",function(data){      
  238.    //清空显示层中的数据      
  239.    $("#message").html("");      
  240.    //为显示层添加获取到的数据      
  241.    //获取对象的数据用data.userInfo.属性      
  242.    $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")      
  243.           .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")      
  244.           .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")      
  245.   });      
  246.  });      
  247.  //为获取List对象按钮添加鼠标单击事件      
  248.  $("#getList").click(function(){      
  249.   $.getJSON("jsontest!returnList.action",function(data){      
  250.    //清空显示层中的数据      
  251.    $("#message").html("");      
  252.    //使用jQuery中的each(data,function(){});函数      
  253.    //从data.userInfosList获取UserInfo对象放入value之中      
  254.    $.each(data.userInfosList,function(i,value){      
  255.     $("#message").append("<div>第"+(i+1)+"个用户:</div>")      
  256.        .append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")      
  257.           .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")      
  258.           .append("<div><font color='red'>密码:"+value.password+"</font></div>");      
  259.    });      
  260.   });      
  261.  });      
  262.  //为获取Map对象按钮添加鼠标单击事件      
  263.  $("#getMap").click(function(){      
  264.   $.getJSON("jsontest!returnMap.action",function(data){      
  265.    //清空显示层中的数据      
  266.    $("#message").html("");      
  267.    //使用jQuery中的each(data,function(){});函数      
  268.    //从data.userInfosList获取UserInfo对象放入value之中      
  269.    //key值为Map的键值      
  270.    $.each(data.userInfosMap,function(key,value){      
  271.     $("#message").append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")      
  272.           .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")      
  273.           .append("<div><font color='red'>密码:"+value.password+"</font></div>");      
  274.    });      
  275.   });      
  276.  });      
  277.  //向服务器发送表达数据      
  278.  $("#regRe").click(function(){      
  279.   //把表单的数据进行序列化      
  280.   var params = $("form").serialize();      
  281.   //使用jQuery中的$.ajax({});Ajax方法      
  282.   $.ajax({      
  283.    url:"jsontest!gainUserInfo.action",      
  284.    type:"POST",      
  285.    data:params,      
  286.    dataType:"json",      
  287.    success:function(data){      
  288.     //清空显示层中的数据      
  289.    $("#message").html("");      
  290.    //为显示层添加获取到的数据      
  291.    //获取对象的数据用data.userInfo.属性      
  292.    $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")      
  293.           .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")      
  294.           .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")      
  295.    }      
  296.  注意:JSON插件会把所有包含getter方法的属性都序列化到返回结果中,所以Action中的其他execute方法都不要把名   
  297.        字加get前缀。  });     
  298.   
  299.  });      
  300. }); 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多