Struts2+jQuery+JSON实现异步交互

本文介绍如何使用Struts2、JQuery和JSON实现Web应用中的异步交互,涵盖从后台获取单个值、对象、List及Map数据,并从前台发送数据到后台的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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;       }       public void setUserName(String userName) {           this.userName = userName;       }       public String getPassword() {           return password;       }       public void setPassword(String password) {           this.password = password;       }   }     2. 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;     //使用json返回单个值       private UserInfo userInfo;      //使用json返回对象       private List<UserInfo> userInfosList;     //使用josn返回List对象       private Map<String,UserInfo> userInfosMap;    //使用json返回Map对象       //为上面的的属性提供get,Set方法       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;       }       /**        * <p>        *  返回单个值        * <p>        * @return        */       public String returnMessage(){           this.message = "成功返回单个值";           return "message";       }       /**        * <p>        *  返回UserInfo对象        * </p>        * @return        */       public String returnUserInfo(){           userInfo = new UserInfo();           userInfo.setUserId(10000);           userInfo.setUserName("张三");           userInfo.setPassword("000000");           return "userInfo";       }       /**        * <p>        *  返回List对象        * </p>        * @return        */       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);           return "list";       }       /**        * <p>        *  返回Map对象        * </p>        * @return        */       public String returnMap(){           userInfosMap = new HashMap<String,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");           userInfosMap.put(u1.getUserId()+"", u1);           userInfosMap.put(u2.getUserId()+"", u2);           userInfosMap.put(u3.getUserId()+"", u3);           userInfosMap.put(u4.getUserId()+"", u4);           return "map";       }       /**        * <p>        *  获得对象,也就是通过表达获得对象(异步的)        * </P>        * @return        */       public String gainUserInfo(){           System.out.println("用户ID:"+userInfo.getUserId());           System.out.println("用户名:"+userInfo.getUserName());           System.out.println("密码:"+userInfo.getPassword());           return "userInfo";       }       /**        * 获得单个值就不用写了和平常一样        */   }     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.apache.org/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">       <script type="text/javascript" src="<%=path %>/js/jquery.js"></script>       <script type="text/javascript" src="<%=path %>/js/json.js"></script>     </head>          <body>       <input id="getMessage" type="button" value="获取单个值"/>&nbsp;&nbsp;       <input id="getUserInfo" type="button" value="获取UserInfo对象"/>&nbsp;&nbsp;       <input id="getList" type="button" value="获取List对象"/>&nbsp;&nbsp;       <input id="getMap" type="button" value="获取Map对象"/>&nbsp;&nbsp;       <br>       <br>       <br>       <!-- 要显示信息的层 -->       <div id="message"></div>       <form>           用户ID:<input name="userInfo.userId" type="text"/><br/>           用户名:<input name="userInfo.userName" type="text"/><br/>           密&nbsp;&nbsp;&nbsp;码:<input name="userInfo.password" type="text"/><br>           <input id="regRe" type="button" value="注册"/>       </form>     </body>   </html>     2. json.js   Js代码   //初始加载页面时   $(document).ready(function(){    //为获取单个值的按钮注册鼠标单击事件    $("#getMessage").click(function(){     $.getJSON("jsontest!returnMessage.action",function(data){      //通过.操作符可以从data.message中获得Action中message的值      $("#message").html("<font color='red'>"+data.message+"</font>");     });    });    //为获取UserInfo对象按钮添加鼠标单击事件    $("#getUserInfo").click(function(){     $.getJSON("jsontest!returnUserInfo.action",function(data){      //清空显示层中的数据      $("#message").html("");      //为显示层添加获取到的数据      //获取对象的数据用data.userInfo.属性      $("#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>")     });    });    //为获取List对象按钮添加鼠标单击事件    $("#getList").click(function(){     $.getJSON("jsontest!returnList.action",function(data){      //清空显示层中的数据      $("#message").html("");      //使用jQuery中的each(data,function(){});函数      //从data.userInfosList获取UserInfo对象放入value之中      $.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>");      });     });    });    //为获取Map对象按钮添加鼠标单击事件    $("#getMap").click(function(){     $.getJSON("jsontest!returnMap.action",function(data){      //清空显示层中的数据      $("#message").html("");      //使用jQuery中的each(data,function(){});函数      //从data.userInfosList获取UserInfo对象放入value之中      //key值为Map的键值      $.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();     //使用jQuery中的$.ajax({});Ajax方法     $.ajax({      url:"jsontest!gainUserInfo.action",      type:"POST",      data:params,      dataType:"json",      success:function(data){       //清空显示层中的数据      $("#message").html("");      //为显示层添加获取到的数据      //获取对象的数据用data.userInfo.属性      $("#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前缀。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值