`

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. }  
package struts2jsonjquery.test.entity;

import java.io.Serializable;
/**
 * <p>
 * 	用户实体类
 * </p>
 * @author 朱延伟
 *
 */
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类代码 复制代码
  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. }  
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代码 复制代码
  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>  
<?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代码 复制代码
  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>  
<%@ 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代码 复制代码
  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.    $.each(data.userInfosList,function(i,value){   
  30.     $("#message").append("<div>第"+(i+1)+"个用户:</div>")   
  31.        .append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")   
  32.           .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")   
  33.           .append("<div><font color='red'>密码:"+value.password+"</font></div>");   
  34.    });   
  35.   });   
  36.  });   
  37.  //为获取Map对象按钮添加鼠标单击事件   
  38.  $("#getMap").click(function(){   
  39.   $.getJSON("jsontest!returnMap.action",function(data){   
  40.    //清空显示层中的数据   
  41.    $("#message").html("");   
  42.    //使用jQuery中的each(data,function(){});函数   
  43.    //从data.userInfosList获取UserInfo对象放入value之中   
  44.    //key值为Map的键值   
  45.    $.each(data.userInfosMap,function(key,value){   
  46.     $("#message").append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")   
  47.           .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")   
  48.           .append("<div><font color='red'>密码:"+value.password+"</font></div>");   
  49.    });   
  50.   });   
  51.  });   
  52.  //向服务器发送表达数据   
  53.  $("#regRe").click(function(){   
  54.   //把表单的数据进行序列化   
  55.   var params = $("form").serialize();   
  56.   //使用jQuery中的$.ajax({});Ajax方法   
  57.   $.ajax({   
  58.    url:"jsontest!gainUserInfo.action",   
  59.    type:"POST",   
  60.    data:params,   
  61.    dataType:"json",   
  62.    success:function(data){   
  63.     //清空显示层中的数据   
  64.    $("#message").html("");   
  65.    //为显示层添加获取到的数据   
  66.    //获取对象的数据用data.userInfo.属性   
  67.    $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")   
  68.           .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")   
  69.           .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")   
  70.    }   
  71.   });   
  72.  });   
  73. });  
//初始加载页面时
$(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前缀。

可以下载工程文件

分享到:
评论
6 楼 youfengkai 2011-05-06  
5 楼 jixiang1988 2011-04-28  
注意的内容是我困惑好久的问题,真是一句惊醒梦中人啊。
4 楼 tanglei6216 2011-03-01  
调用returnList时,json返回的数据为空
3 楼 mszb3mzi 2010-12-30  
我也是一个JQuery的初学者
看了好几天的视频 结果视频里光有 前端的代码(css js html)而没有后台的代码,这让我很苦恼,因为我更本就不知道JSON是怎么和前台的JQuery进行通信的
而且我现在的这个小程序里又非常需要用AJAX技术来实现人性化
通过楼主的这段非常珍贵的代码 使我了解了很多
我并没有用struts 而是直接用了 jdbc+servlet的方式来写的Demo
所以虽然一开始的时候 您的程序就已经可以运行
但我还是力图自己去实现
昨天晚上奋战了很久 看了很多方面的材料
有百度里的J2EE中JSON+Jquery_AJAX应用.pdf
也有JavaEye里的JSON官方范例
和楼主您的工程代码
最后加上firefox里的firebug工具 我才终于明白了 JSON的含义
不过也有可能是JQuery的$.getJSON()方法对JSON的数据要求的严格性吧
使得我开始的修改你的例子时候遇到了很大的问题
每次只能有1个请求被完成
后来才分析出struts已经实现了 同Action完成不同请求 返回不同的JSON
呵呵 总算没有白费吧
最后再次感谢楼主的帮助

2 楼 yundixiaoduo 2010-12-27  
感谢楼主!!!我搞了一天struts2.2.1.1+json一点头绪都没有,后来被逼无奈换了低版本的struts。这个工程文件太好啦!
1 楼 ouchuquan 2010-12-15  
我找了很久才找到这么好的帖子,百度搜索有关的信息就是找不到。后来翻翻ie收藏夹不经意间发现了这个帖子,真是恩人啊,很好,我是特意来感谢楼主的,谢谢非常谢谢!

相关推荐

    struts2+ajax+jquery

    这圣思园张老师的一个上课演示文件,讲的是struts2+jquery+Ajax实现异步交互的简单例子。

    Struts2+JSON+jQuery实现异步交互数据时选择要序列化的属性(二使用XML配置方式)

    NULL 博文链接:https://zyw090111.iteye.com/blog/724574

    jquey配合josn实现两级菜单联动特效.rar

    jquey配合josn实现两级网页菜单代码,二级的菜单联动特效,Author : TongFei  格式可更改为横行 也行 只需修改样式即可,url:菜单数据josn文件路径

    SYPRO示例项目源码和EasyUI入门视频教程

    sshe示例程序(struts2+spring3+hibernate4+easyui)(Maven构建) easyui1.2.6整站文件.zip jquery1.7.2中文API修正版.chm jquery.easyui-1.2.5源码未压缩版.rar jquery-easyui-1.2.6.zip JQuery-esqyUI中文-1.2.5API....

    java开源包2

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包4

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包5

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包10

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包7

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包9

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包101

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    Java资源包01

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics