`
myCsdn_taoge
  • 浏览: 40661 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

Struts2+jQuery+JSON实现异步交互

 
阅读更多

Struts2+JQuery+JSON实现异步交互,包括从后台获得单个值、对象、List和Map数据并从前台的表达中获取值把值进行序列化通过JQuery的$.ajax({})传到后台和后台的对象进行绑定。

第一步:在MyEclipse中创建JavaWeb工厂并把Struts2 和 json的jar包添加到工程中添加完成后的工程图是:

 

第二步:创建后台:

  1. UserInfo实体类:

 

Userinfo实体类代码 复制代码
  1. package struts2jsonjquery.test.entity;   
  2.   
  3. import java.io.Serializable;   
  4. /**   
  5.  * <p>   
  6.  *  用户实体类   
  7.  * </p>   
  8.  * @author   
  9.  *   
  10.  */   
  11. public class UserInfo implements Serializable {   
  12.   
  13.     private static final long serialVersionUID = 3952189513312630860L;   
  14.        
  15.     private int userId;   
  16.     private String userName;   
  17.     private String password;   
  18.     public int getUserId() {   
  19.         return userId;   
  20.     }   
  21.     public void setUserId(int userId) {   
  22.         this.userId = userId;   
  23.     }   
  24.     public String getUserName() {   
  25.         return userName;   
  26.     }   
  27.     public void setUserName(String userName) {   
  28.         this.userName = userName;   
  29.     }   
  30.     public String getPassword() {   
  31.         return password;   
  32.     }   
  33.     public void setPassword(String password) {   
  34.         this.password = password;   
  35.     }   
  36. }  
 

 

2. Action类

Action类代码 复制代码
  1. package struts2jsonjquery.test.action;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.HashMap;   
  5. import java.util.List;   
  6. import java.util.Map;   
  7.   
  8. import struts2jsonjquery.test.entity.UserInfo;   
  9.   
  10. import com.opensymphony.xwork2.ActionSupport;   
  11.   
  12. public class JsonJqueryStruts2Action extends ActionSupport {   
  13.   
  14.     private static final long serialVersionUID = 3518833679938898354L;   
  15.        
  16.     private String message;     //使用json返回单个值   
  17.     private UserInfo userInfo;      //使用json返回对象   
  18.     private List<UserInfo> userInfosList;     //使用josn返回List对象   
  19.     private Map<String,UserInfo> userInfosMap;    //使用json返回Map对象   
  20.     //为上面的的属性提供get,Set方法   
  21.     public String getMessage() {   
  22.         return message;   
  23.     }   
  24.     public void setMessage(String message) {   
  25.         this.message = message;   
  26.     }   
  27.     public UserInfo getUserInfo() {   
  28.         return userInfo;   
  29.     }   
  30.     public void setUserInfo(UserInfo userInfo) {   
  31.         this.userInfo = userInfo;   
  32.     }   
  33.     public List<UserInfo> getUserInfosList() {   
  34.         return userInfosList;   
  35.     }   
  36.     public void setUserInfosList(List<UserInfo> userInfosList) {   
  37.         this.userInfosList = userInfosList;   
  38.     }   
  39.     public Map<String, UserInfo> getUserInfosMap() {   
  40.         return userInfosMap;   
  41.     }   
  42.     public void setUserInfosMap(Map<String, UserInfo> userInfosMap) {   
  43.         this.userInfosMap = userInfosMap;   
  44.     }   
  45.     /**   
  46.      * <p>   
  47.      *  返回单个值   
  48.      * <p>   
  49.      * @return   
  50.      */   
  51.     public String returnMessage(){   
  52.         this.message = "成功返回单个值";   
  53.         return "message";   
  54.     }   
  55.     /**   
  56.      * <p>   
  57.      *  返回UserInfo对象   
  58.      * </p>   
  59.      * @return   
  60.      */   
  61.     public String returnUserInfo(){   
  62.         userInfo = new UserInfo();   
  63.         userInfo.setUserId(10000);   
  64.         userInfo.setUserName("张三");   
  65.         userInfo.setPassword("000000");   
  66.         return "userInfo";   
  67.     }   
  68.     /**   
  69.      * <p>   
  70.      *  返回List对象   
  71.      * </p>   
  72.      * @return   
  73.      */   
  74.     public String returnList(){   
  75.         userInfosList = new ArrayList<UserInfo>();   
  76.         UserInfo u1 = new UserInfo();   
  77.         u1.setUserId(10000);   
  78.         u1.setUserName("张三");   
  79.         u1.setPassword("000000");   
  80.         UserInfo u2 = new UserInfo();   
  81.         u2.setUserId(10001);   
  82.         u2.setUserName("李四");   
  83.         u2.setPassword("111111");   
  84.         UserInfo u3 = new UserInfo();   
  85.         u3.setUserId(10002);   
  86.         u3.setUserName("王五");   
  87.         u3.setPassword("222222");   
  88.         UserInfo u4 = new UserInfo();   
  89.         u4.setUserId(10003);   
  90.         u4.setUserName("赵六");   
  91.         u4.setPassword("333333");   
  92.         userInfosList.add(u1);   
  93.         userInfosList.add(u2);   
  94.         userInfosList.add(u3);   
  95.         userInfosList.add(u4);   
  96.         return "list";   
  97.     }   
  98.     /**   
  99.      * <p>   
  100.      *  返回Map对象   
  101.      * </p>   
  102.      * @return   
  103.      */   
  104.     public String returnMap(){   
  105.         userInfosMap = new HashMap<String,UserInfo>();   
  106.         UserInfo u1 = new UserInfo();   
  107.         u1.setUserId(10000);   
  108.         u1.setUserName("张三");   
  109.         u1.setPassword("000000");   
  110.         UserInfo u2 = new UserInfo();   
  111.         u2.setUserId(10001);   
  112.         u2.setUserName("李四");   
  113.         u2.setPassword("111111");   
  114.         UserInfo u3 = new UserInfo();   
  115.         u3.setUserId(10002);   
  116.         u3.setUserName("王五");   
  117.         u3.setPassword("222222");   
  118.         UserInfo u4 = new UserInfo();   
  119.         u4.setUserId(10003);   
  120.         u4.setUserName("赵六");   
  121.         u4.setPassword("333333");   
  122.         userInfosMap.put(u1.getUserId()+"", u1);   
  123.         userInfosMap.put(u2.getUserId()+"", u2);   
  124.         userInfosMap.put(u3.getUserId()+"", u3);   
  125.         userInfosMap.put(u4.getUserId()+"", u4);   
  126.         return "map";   
  127.     }   
  128.     /**   
  129.      * <p>   
  130.      *  获得对象,也就是通过表达获得对象(异步的)   
  131.      * </P>   
  132.      * @return   
  133.      */   
  134.     public String gainUserInfo(){   
  135.         System.out.println("用户ID:"+userInfo.getUserId());   
  136.         System.out.println("用户名:"+userInfo.getUserName());   
  137.         System.out.println("密码:"+userInfo.getPassword());   
  138.         return "userInfo";   
  139.     }   
  140.     /**   
  141.      * 获得单个值就不用写了和平常一样   
  142.      */   
  143. }  
 

 

3.  struts.xml

 

Struts.xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <!DOCTYPE struts PUBLIC   
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
  5.   
  6. <struts>   
  7.   
  8.     <package name="default" namespace="/" extends="json-default">   
  9.         <action name="jsontest" class="struts2jsonjquery.test.action.JsonJqueryStruts2Action">   
  10.             <!-- 返回单个值的result -->   
  11.             <result name="message" type="json"></result>   
  12.             <!-- 返回UserInfo对象的 -->   
  13.             <result name="userInfo" type="json"></result>   
  14.             <!-- 返回List对象的 -->   
  15.             <result name="list" type="json"></result>   
  16.             <!-- 返回Map对象的 -->   
  17.             <result name="map" type="json"></result>   
  18.         </action>   
  19.     </package>   
  20. </struts>  
 

 

前台:

1.  index.jsp

Html代码 复制代码
  1. <%@ page language="java" pageEncoding="GBK"%>  
  2. <%   
  3.     String path = request.getContextPath();   
  4. %>  
  5.   
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  7. <html>  
  8.   <head>  
  9.        
  10.     <title>Struts2+JQuery+JSON</title>  
  11.     <meta http-equiv="pragma" content="no-cache">  
  12.     <meta http-equiv="cache-control" content="no-cache">  
  13.     <meta http-equiv="expires" content="0">       
  14.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  15.     <meta http-equiv="description" content="This is my page">  
  16.     <script type="text/javascript" src="<%=path %>/js/jquery.js"></script>  
  17.     <script type="text/javascript" src="<%=path %>/js/json.js"></script>  
  18.   </head>  
  19.      
  20.   <body>  
  21.     <input id="getMessage" type="button" value="获取单个值"/>&nbsp;&nbsp;   
  22.     <input id="getUserInfo" type="button" value="获取UserInfo对象"/>&nbsp;&nbsp;   
  23.     <input id="getList" type="button" value="获取List对象"/>&nbsp;&nbsp;   
  24.     <input id="getMap" type="button" value="获取Map对象"/>&nbsp;&nbsp;   
  25.     <br>  
  26.     <br>  
  27.     <br>  
  28.     <!-- 要显示信息的层 -->  
  29.     <div id="message"></div>  
  30.     <form>  
  31.         用户ID:<input name="userInfo.userId" type="text"/><br/>  
  32.         用户名:<input name="userInfo.userName" type="text"/><br/>  
  33.         密&nbsp;&nbsp;&nbsp;码:<input name="userInfo.password" type="text"/><br>  
  34.         <input id="regRe" type="button" value="注册"/>  
  35.     </form>  
  36.   </body>  
  37. </html>  
 

 

2. json.js

 

Js代码 复制代码
  1. //初始加载页面时   
  2. $(document).ready(function(){   
  3.  //为获取单个值的按钮注册鼠标单击事件   
  4.  $("#getMessage").click(function(){   
  5.   $.getJSON("jsontest!returnMessage.action",function(data){   
  6.    //通过.操作符可以从data.message中获得Action中message的值   
  7.    $("#message").html("<font color='red'>"+data.message+"</font>");   
  8.   });   
  9.  });   
  10.  //为获取UserInfo对象按钮添加鼠标单击事件   
  11.  $("#getUserInfo").click(function(){   
  12.   $.getJSON("jsontest!returnUserInfo.action",function(data){   
  13.    //清空显示层中的数据   
  14.    $("#message").html("");   
  15.    //为显示层添加获取到的数据   
  16.    //获取对象的数据用data.userInfo.属性   
  17.    $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")   
  18.           .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")   
  19.           .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")   
  20.   });   
  21.  });   
  22.  //为获取List对象按钮添加鼠标单击事件   
  23.  $("#getList").click(function(){   
  24.   $.getJSON("jsontest!returnList.action",function(data){   
  25.    //清空显示层中的数据   
  26.    $("#message").html("");   
  27.    //使用jQuery中的each(data,function(){});函数   
  28.    //从data.userInfosList获取UserInfo对象放入value之中  
  29.    //注意需要将data 作如下转换
  30.    var objeval("("+data+")");// 这里的obj 可获取到action中的所有getter属性
  31.    
  32.    $.each(obj.userInfosList,function(i,value){   
  33.     $("#message").append("<div>第"+(i+1)+"个用户:</div>")   
  34.        .append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")   
  35.           .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")   
  36.           .append("<div><font color='red'>密码:"+value.password+"</font></div>");   
  37.    });   
  38.   });   
  39.  });   
  40.  //为获取Map对象按钮添加鼠标单击事件   
  41.  $("#getMap").click(function(){   
  42.   $.getJSON("jsontest!returnMap.action",function(data){   
  43.    //清空显示层中的数据   
  44.    $("#message").html("");   
  45.    //使用jQuery中的each(data,function(){});函数   
  46.    //从data.userInfosList获取UserInfo对象放入value之中   
  47.    //key值为Map的键值   
  48.    $.each(data.userInfosMap,function(key,value){   
  49.     $("#message").append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")   
  50.           .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")   
  51.           .append("<div><font color='red'>密码:"+value.password+"</font></div>");   
  52.    });   
  53.   });   
  54.  });   
  55.  //向服务器发送表达数据   
  56.  $("#regRe").click(function(){   
  57.   //把表单的数据进行序列化   
  58.   var params = $("form").serialize();   
  59.   //使用jQuery中的$.ajax({});Ajax方法   
  60.   $.ajax({   
  61.    url:"jsontest!gainUserInfo.action",   
  62.    type:"POST",   
  63.    data:params,   
  64.    dataType:"json",   
  65.    success:function(data){   
  66.     //清空显示层中的数据   
  67.    $("#message").html("");   
  68.    //为显示层添加获取到的数据   
  69.    //获取对象的数据用data.userInfo.属性   
  70.    $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")   
  71.           .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")   
  72.           .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")   
  73.    }   
  74.   });   
  75.  });   
  76. });  
 

 注意:JSON插件会把所有包含getter方法的属性都序列化到返回结果中,所以Action中的其他execute方法都不要把名

       字加get前缀。

 

分享到:
评论

相关推荐

    Struts2+jQuery(不用JSON)实现局部刷新

    Struts2作为MVC框架,主要用于处理后端业务逻辑,而jQuery则是一个强大的JavaScript库,简化了前端DOM操作、事件处理以及AJAX交互。在这个“Struts2+jQuery实现局部刷新”的主题中,我们将探讨如何利用这两者的优势...

    一个简单的struts2+json+jquery 交互的例子

    总结来说,这个例子展示了如何利用Struts2处理后端业务逻辑,使用JSON作为数据交换格式,以及通过jQuery在前端实现动态更新和与服务器的异步通信。了解和掌握这三个工具的整合使用,对于提升Web开发效率和用户体验...

    SSH+jQuery+json 实现的Ajax操作,绝对精华,代码简练清晰,绝对能看明白

    这个压缩包中的资源,"SSH+jQuery+json 实现的Ajax操作,绝对精华,代码简练清晰,绝对能看明白",显然提供了一个使用这些技术实现Ajax级联操作的实例。下面将详细介绍这些技术及其在Ajax操作中的应用。 **SSH ...

    struts2+jquery之form插件实现异步上传

    Struts2和jQuery是Web开发中的两个重要框架,它们结合使用可以实现许多强大的功能,其中包括异步文件上传。在这个主题中,我们将详细讨论如何利用Struts2和jQuery的form插件来实现这一功能。 首先,Struts2是一个...

    struts2+jquery+json+ajax例子

    Struts2、jQuery、JSON和Ajax是Web开发中常见的技术栈,它们共同为构建动态、交互式的用户界面提供了强大的支持。下面将详细解释这些技术及其在登录示例中的应用。 Struts2是一个基于MVC(Model-View-Controller)...

    struts2+jquery+json

    Struts2、jQuery和JSON是Web开发中的三个关键技术,它们在构建动态、交互式的Web应用程序时发挥着重要作用。下面将分别对这三个技术进行详细解释,并探讨它们如何协同工作。 Struts2是一个基于MVC(Model-View-...

    struts2+json

    这个资源"struts2+json"显然涉及到在Struts2框架下实现JSON(JavaScript Object Notation)数据交换,这是一种轻量级的数据交换格式,广泛用于前后端交互,特别是AJAX(Asynchronous JavaScript and XML)请求。...

    struts2+json+jquery实现ajax数据的存取

    "Struts2+JSON+jQuery实现Ajax数据的存取"就是一个典型的示例,它结合了强大的MVC框架Struts2、轻量级的数据交换格式JSON以及高效的前端库jQuery,以实现网页上的无刷新数据交互。下面将详细介绍这三个技术及其在...

    struts2+jquery之form插件实现异步上传图片并显示

    Struts2和jQuery是Web开发中的两个重要框架,它们结合使用可以实现许多强大的功能,比如异步上传图片并在页面上预览。在这个场景中,我们将深入探讨如何利用jQuery的form插件来实现在Struts2环境中进行图片上传,并...

    struts2+ajax+jquery

    在这个"struts2+ajax+jquery"的主题中,我们将深入探讨如何利用Struts2、jQuery和Ajax技术实现Web页面的异步交互。 首先,Struts2作为MVC框架,它的核心是Action,它负责处理用户的请求,并通过配置的Result返回...

    Struts2+Jquery+Ajax

    总的来说,Struts2+Jquery+Ajax的组合使得开发者能够构建出交互性强、响应速度快的Web应用。通过理解MVC模式、熟练掌握Struts2的配置和Action处理、灵活运用Jquery和Ajax,可以大大提高开发效率,提升用户使用体验。...

    struts2+jquery+json 小例子

    博客链接中提到的内容可能详细解释了如何配置Struts2的Action、Result以及如何在JSP页面中使用jQuery与服务器进行交互,同时展示了如何处理和返回JSON数据。这个小例子可以帮助初学者理解这三者如何协同工作,提升...

    struts2+jQuery+json 实例

    Struts2、jQuery和JSON是Web开发中的三个关键组件,它们共同构成了高效、动态和交互式的用户界面。这里我们将深入探讨这三个技术,并结合实例来理解它们如何协同工作。 首先,Struts2是一个基于MVC(Model-View-...

    Struts2+Jquery+ajax+Json代码案例

    总结来说,这个案例展示了如何利用Struts2作为后端控制器处理业务逻辑,jQuery简化前端交互,Ajax实现异步通信,以及JSON作为数据交换格式,共同构建一个高效、动态的Web应用程序。通过深入理解这些技术,开发者能够...

    struts2+spring+hibernate+jquery+dwr+json

    标题 "struts2+spring+hibernate+jquery+dwr+json" 描述了一个集成的Web应用程序开发框架,其中包含了多个关键技术和库。这个框架旨在提高开发效率,提供灵活的数据管理,以及用户友好的前端交互。 1. Struts2:...

    struts2.1.8+json+jquery1.3实现ajax

    总结起来,这个项目结合了Struts2的Action和JSON支持,利用jQuery的Ajax功能,实现了客户端与服务器之间的数据交互,达到了动态更新页面的目的。对于Web开发者来说,了解这种技术组合有助于提高开发效率和用户体验。

    struts2+jquery+json+ajax

    Struts2、jQuery、JSON和Ajax是Web开发中常见的技术栈,它们在构建动态、交互式的Web应用程序中扮演着重要角色。这篇博文可能是介绍如何将这些技术整合到一起,以提高用户界面的响应性和用户体验。 Struts2是一个...

    Struts+Jquery+Ajax+Json应用实例

    **Ajax(Asynchronous JavaScript and XML)**:Ajax允许在不刷新整个页面的情况下,与服务器交换数据并局部更新网页内容,从而实现了异步交互。在jQuery中,使用$.ajax()函数或其简化的$.get()和$.post()方法可以...

Global site tag (gtag.js) - Google Analytics