Struts2+JSON 实现AJAX 返回对象和列表

Struts2+JSON_实现AJAX_返回对象和列表 立即下载

JSON 是一个插件,它允许我们在JavaScript中异步调用Action,它提供了一个json的返回结果类型(ResultType),只要为Action指定类型为

json返回结果类型,那么这个响应结果不需要返回给任何视图层,JSON会将Action里的状态信息序列化为JSON指定格式的数据,并将该数据返回

给JAVASCRIPT,这样可以完成AJAX的应用交互.
要应用 JSON 插件,首先需要到

 http://code.google.com/p/jsonplugin/downloads/list

下载最新JSON插件,我这里下载的是jsonplugin-

0.33.jar ,将该文件拷到WEB工程的LIB目录,当然还需要下载Struts2 类库,可以到 http://struts.apache.org/download.cgi#struts2014

这里去下载,下载完后解压缩,将JAR拷到WEB工程的LIB目录,不能少于以下几个JAR文件(struts2-api-2.0.5.jar、struts2-core-2.0.5.jar、

ognl-2.6.9.jar、xwork-2.0.0.jar、commons-logging-1.1.jar、freemarker-2.3.8.jar,具体文件名视版本而定),接下来我们可以写个应用

来试验,本例程分为二步来写,第一步实现返回一个结果对象,第二步实现返回一个结果列表,首先来看下返回结果对象的实现.
我们需要先建立一个JavaBean 为值对象,用来将用户的基本数据封装进去,该实体在结果对象和结果列表中都会使用到
Users.java 代码如下:

Java代码 复制代码
  1. package com.jsontostruts2.vo;   
  2.   
  3. /**  
  4.  * <p>  
  5.  * 创 建 人:ChenTao  
  6.  * <p>  
  7.  * 创建日期:2009-5-18 下午05:24:48  
  8.  * <p>  
  9.  */  
  10. public class Users {   
  11.   
  12.     private Integer userId;   
  13.   
  14.     private String userName;   
  15.   
  16.     private String sex;   
  17.   
  18.     public Users() {   
  19.   
  20.     }   
  21.     // get... set.... 略......   
  22. }  
package com.jsontostruts2.vo;

/**
 * <p>
 * 创 建 人:ChenTao
 * <p>
 * 创建日期:2009-5-18 下午05:24:48
 * <p>
 */
public class Users {

	private Integer userId;

	private String userName;

	private String sex;

	public Users() {

	}
	// get... set.... 略......
}

 

实现 UserAction.java 源码如下:

Java代码 复制代码
  1. package com.jsontostruts2.action;   
  2.   
  3. import com.googlecode.jsonplugin.annotations.JSON;   
  4. import com.jsontostruts2.vo.Users;   
  5. import com.opensymphony.xwork2.ActionSupport;   
  6.   
  7. /**  
  8.  * <p>  
  9.  * 创 建 人:ChenTao  
  10.  * <p>  
  11.  * 创建日期:2009-5-18 下午05:22:50  
  12.  * <p>  
  13.  */  
  14. @SuppressWarnings("serial")   
  15. public class UserAction extends ActionSupport {   
  16.   
  17.     private Users users;   
  18.        
  19.     @JSON(name="USER")   
  20.     public Users getUsers() {   
  21.         return users;   
  22.     }   
  23.   
  24.     public void setUsers(Users users) {   
  25.         this.users = users;   
  26.     }   
  27.   
  28.     @Override  
  29.     public String execute() throws Exception {   
  30.         users = new Users();   
  31.         users.setUserId(1);   
  32.         users.setUserName("ctojxzsycztao");   
  33.         users.setSex("男人");   
  34.         return SUCCESS;   
  35.     }   
  36.   
  37. }  
package com.jsontostruts2.action;

import com.googlecode.jsonplugin.annotations.JSON;
import com.jsontostruts2.vo.Users;
import com.opensymphony.xwork2.ActionSupport;

/**
 * <p>
 * 创 建 人:ChenTao
 * <p>
 * 创建日期:2009-5-18 下午05:22:50
 * <p>
 */
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {

	private Users users;
	
	@JSON(name="USER")
	public Users getUsers() {
		return users;
	}

	public void setUsers(Users users) {
		this.users = users;
	}

	@Override
	public String execute() throws Exception {
		users = new Users();
		users.setUserId(1);
		users.setUserName("ctojxzsycztao");
		users.setSex("男人");
		return SUCCESS;
	}

}

 

接下来我们需要配置 struts.xml 文件,为了在现下面不再重复写该文件,这里我将结果对象和列表的请求控制一并贴上来,文件内容:

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.     <!-- 注意这里扩展不再是 struts-default,而是 json-default -->  
  8.     <package name="jsonManager" extends="json-default">  
  9.         <!-- 返回结果类型为 json -->  
  10.         <action name="userJson" class="com.jsontostruts2.action.UserAction">  
  11.             <result type="json"/>  
  12.         </action>  
  13.         <!-- 该action在返回列表时添加进来的 -->  
  14.         <action name="jsonlist" class="com.jsontostruts2.action.UserListAction">  
  15.             <result type="json"/>  
  16.         </action>  
  17.            
  18.     </package>  
  19. </struts>  

 

能后创建web.xml 和 userjson.jsp:

Xml代码 复制代码
  1. web.xml :   
  2. <?xml version="1.0" encoding="UTF-8"?>  
  3. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   
  8.     <filter>  
  9.         <filter-name>Struts2</filter-name>  
  10.         <filter-class>  
  11.             org.apache.struts2.dispatcher.FilterDispatcher   
  12.         </filter-class>  
  13.     </filter>  
  14.     <filter-mapping>  
  15.         <filter-name>Struts2</filter-name>  
  16.         <url-pattern>*.action</url-pattern>  
  17.     </filter-mapping>  
  18.     <filter-mapping>  
  19.         <filter-name>Struts2</filter-name>  
  20.         <url-pattern>*.jsp</url-pattern>  
  21.     </filter-mapping>  
  22.   
  23.     <welcome-file-list>  
  24.         <welcome-file>index.jsp</welcome-file>  
  25.     </welcome-file-list>  
  26. </web-app>  

 

userjson.jsp :

Html代码 复制代码
  1. <%@ page language="java" contentType="text/html;charset=UTF-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>json 返回对象处理</title>  
  6.     <script language="javascript">  
  7.         var xmlHttp = false;   
  8.         try{   
  9.             xmlHttp = new ActiveXObject("msxml2.XMLHTTP");   
  10.         }catch(e1){   
  11.             try{   
  12.                 xmlHttp = new ActiveXObject("microsoft.XMLHTTP");   
  13.             }catch(e2){   
  14.                 try{   
  15.                     xmlHttp = new XMLHttpRequest();   
  16.                 }catch(e3){   
  17.                     xmlHttp = false;   
  18.                 }   
  19.             }   
  20.         }   
  21.         if(!xmlHttp){   
  22.             alert("create xmlHttpRequest fail");   
  23.         }   
  24.         function jsonResult(){   
  25.             xmlHttp.onreadystatechange = function(){   
  26.                 if(xmlHttp.readyState == 4) {   
  27.                 // 将 JSON 对象转换为JSON字符串,需要注意调用eval函数时必须使用"("和")"将JSON字符串括起来,否   
  28.   
  29. 则会出错   
  30.                 var userObj = eval('(' + xmlHttp.responseText + ')');   
  31.                 var userStr = "<table border=0>";   
  32.                     userStr += '<tr><td><b>userId</b></td><td>' + userObj.USER.userId + '</td></tr>';   
  33.                     userStr += ('<tr><td><b>userName</b></td><td>' + userObj.USER.userName + '</td></tr>');   
  34.                     userStr += ('<tr><td><b>sex</b></td><td>' + userObj.USER.sex + '</td></tr>');   
  35.                     userStr += "</table>";   
  36.                     document.getElementById('jsonDiv').innerHTML = userStr;   
  37.                 }   
  38.             }   
  39.             xmlHttp.open("POST","userJson.action",true);   
  40.             xmlHttp.send(null);   
  41.         }   
  42.     </script>  
  43.   </head>  
  44.   <body>  
  45.     <div id="jsonDiv"></div>  
  46.     <input type="button" value="show" onclick="jsonResult();">  
  47.   </body>  
  48. </html>  
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>json 返回对象处理</title>
	<script language="javascript">
		var xmlHttp = false;
		try{
			xmlHttp = new ActiveXObject("msxml2.XMLHTTP");
		}catch(e1){
			try{
				xmlHttp = new ActiveXObject("microsoft.XMLHTTP");
			}catch(e2){
				try{
					xmlHttp = new XMLHttpRequest();
				}catch(e3){
					xmlHttp = false;
				}
			}
		}
		if(!xmlHttp){
			alert("create xmlHttpRequest fail");
		}
		function jsonResult(){
			xmlHttp.onreadystatechange = function(){
			    if(xmlHttp.readyState == 4) {
				// 将 JSON 对象转换为JSON字符串,需要注意调用eval函数时必须使用"("和")"将JSON字符串括起来,否

则会出错
				var userObj = eval('(' + xmlHttp.responseText + ')');
				var userStr = "<table border=0>";
                    userStr += '<tr><td><b>userId</b></td><td>' + userObj.USER.userId + '</td></tr>';
                    userStr += ('<tr><td><b>userName</b></td><td>' + userObj.USER.userName + '</td></tr>');
                    userStr += ('<tr><td><b>sex</b></td><td>' + userObj.USER.sex + '</td></tr>');
                    userStr += "</table>";
                    document.getElementById('jsonDiv').innerHTML = userStr;
                }
			}
			xmlHttp.open("POST","userJson.action",true);
			xmlHttp.send(null);
		}
	</script>
  </head>
  <body>
  	<div id="jsonDiv"></div>
    <input type="button" value="show" onclick="jsonResult();">
  </body>
</html>

 

现在你可以将应用发布到你的容器当中输入 http://localhost:8080/struts2ToJson/userjson.jsp 点show,这个时候你可以看到你想要的结

果,接来实现下返回列表的做法,当然与返回对象会有所不同,我们需要将一个List对象转换为一个JSON规范的字符串,能后发送给客户端的JS,

首先建立一个将List 转换为指定字符串的工具类,该工具是在一个无意间从网上看到就拿来用了,经过少许修改,为了减少代码行数我将只贴

出适用于本示例的代码:
JsonUtil.java :

Java代码 复制代码
  1. package com.jsontostruts2.util;   
  2.   
  3. import java.beans.IntrospectionException;   
  4. import java.beans.Introspector;   
  5. import java.beans.PropertyDescriptor;   
  6. import java.util.List;   
  7.   
  8. /**  
  9.  * <p>  
  10.  * @author ChenTao  
  11.  * <p>  
  12.  * @Date 2009-5-18 下午05:47:27  
  13.  * <p>  
  14.  */  
  15. public class JsonUtil {   
  16.   
  17.     /**  
  18.      * @param object  
  19.      *            任意对象  
  20.      * @return java.lang.String  
  21.      */  
  22.     public static String objectToJson(Object object) {   
  23.         StringBuilder json = new StringBuilder();   
  24.         if (object == null) {   
  25.             json.append("/"/"");   
  26.         } else if (object instanceof String || object instanceof Integer) {   
  27.             json.append("/"").append((String)object).append("/"");   
  28.         } else {   
  29.             json.append(beanToJson(object));   
  30.         }   
  31.         return json.toString();   
  32.     }   
  33.   
  34.     /**  
  35.      * 功能描述:传入任意一个 javabean 对象生成一个指定规格的字符串  
  36.      *   
  37.      * @param bean  
  38.      *            bean对象  
  39.      * @return String  
  40.      */  
  41.     public static String beanToJson(Object bean) {   
  42.         StringBuilder json = new StringBuilder();   
  43.         json.append("{");   
  44.         PropertyDescriptor[] props = null;   
  45.         try {   
  46.             props = Introspector.getBeanInfo(bean.getClass(), Object.class)   
  47.                     .getPropertyDescriptors();   
  48.         } catch (IntrospectionException e) {   
  49.         }   
  50.         if (props != null) {   
  51.             for (int i = 0; i < props.length; i++) {   
  52.                 try {   
  53.                     String name = objectToJson(props[i].getName());   
  54.                     String value = objectToJson(props[i].getReadMethod().invoke(bean));   
  55.                     json.append(name);   
  56.                     json.append(":");   
  57.                     json.append(value);   
  58.                     json.append(",");   
  59.                 } catch (Exception e) {   
  60.                 }   
  61.             }   
  62.             json.setCharAt(json.length() - 1, '}');   
  63.         } else {   
  64.             json.append("}");   
  65.         }   
  66.         return json.toString();   
  67.     }   
  68.   
  69.     /**  
  70.      * 功能描述:通过传入一个列表对象,调用指定方法将列表中的数据生成一个JSON规格指定字符串  
  71.      *   
  72.      * @param list  
  73.      *            列表对象  
  74.      * @return java.lang.String  
  75.      */  
  76.     public static String listToJson(List<?> list) {   
  77.         StringBuilder json = new StringBuilder();   
  78.         json.append("[");   
  79.         if (list != null && list.size() > 0) {   
  80.             for (Object obj : list) {   
  81.                 json.append(objectToJson(obj));   
  82.                 json.append(",");   
  83.             }   
  84.             json.setCharAt(json.length() - 1, ']');   
  85.         } else {   
  86.             json.append("]");   
  87.         }   
  88.         return json.toString();   
  89.     }   
  90. }  
package com.jsontostruts2.util;

import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.List;

/**
 * <p>
 * @author ChenTao
 * <p>
 * @Date 2009-5-18 下午05:47:27
 * <p>
 */
public class JsonUtil {

	/**
	 * @param object
	 *            任意对象
	 * @return java.lang.String
	 */
	public static String objectToJson(Object object) {
		StringBuilder json = new StringBuilder();
		if (object == null) {
			json.append("/"/"");
		} else if (object instanceof String || object instanceof Integer) {
			json.append("/"").append((String)object).append("/"");
		} else {
			json.append(beanToJson(object));
		}
		return json.toString();
	}

	/**
	 * 功能描述:传入任意一个 javabean 对象生成一个指定规格的字符串
	 * 
	 * @param bean
	 *            bean对象
	 * @return String
	 */
	public static String beanToJson(Object bean) {
		StringBuilder json = new StringBuilder();
		json.append("{");
		PropertyDescriptor[] props = null;
		try {
			props = Introspector.getBeanInfo(bean.getClass(), Object.class)
					.getPropertyDescriptors();
		} catch (IntrospectionException e) {
		}
		if (props != null) {
			for (int i = 0; i < props.length; i++) {
				try {
					String name = objectToJson(props[i].getName());
					String value = objectToJson(props[i].getReadMethod().invoke(bean));
					json.append(name);
					json.append(":");
					json.append(value);
					json.append(",");
				} catch (Exception e) {
				}
			}
			json.setCharAt(json.length() - 1, '}');
		} else {
			json.append("}");
		}
		return json.toString();
	}

	/**
	 * 功能描述:通过传入一个列表对象,调用指定方法将列表中的数据生成一个JSON规格指定字符串
	 * 
	 * @param list
	 *            列表对象
	 * @return java.lang.String
	 */
	public static String listToJson(List<?> list) {
		StringBuilder json = new StringBuilder();
		json.append("[");
		if (list != null && list.size() > 0) {
			for (Object obj : list) {
				json.append(objectToJson(obj));
				json.append(",");
			}
			json.setCharAt(json.length() - 1, ']');
		} else {
			json.append("]");
		}
		return json.toString();
	}
}

 

UserListAction.java:

Java代码 复制代码
  1. package com.jsontostruts2.action;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.List;   
  5.   
  6. import com.googlecode.jsonplugin.annotations.JSON;   
  7. import com.jsontostruts2.util.JsonUtil;   
  8. import com.jsontostruts2.vo.Users;   
  9. import com.opensymphony.xwork2.ActionSupport;   
  10.   
  11. /**  
  12.  * <p>  
  13.  * 创 建 人:ChenTao  
  14.  * <p>  
  15.  * 创建日期:2009-5-18 下午05:45:42  
  16.  * <p>  
  17.  */  
  18. @SuppressWarnings("serial")   
  19. public class UserListAction extends ActionSupport {   
  20.        
  21.     /* 用于存放JSON生成后的字符串结果 */  
  22.     private String jsonResult;   
  23.   
  24.     @JSON(name="JSONRESULT")   
  25.     public String getJsonResult() {   
  26.         return jsonResult;   
  27.     }   
  28.   
  29.     public void setJsonResult(String jsonResult) {   
  30.         this.jsonResult = jsonResult;   
  31.     }   
  32.   
  33.     @Override  
  34.     public String execute() throws Exception {   
  35.         List<Users> userList = new ArrayList<Users>();   
  36.         Users users = new Users();   
  37.         users.setUserId(1);   
  38.         users.setUserName("ctojxzsycztao");   
  39.         users.setSex("男人");   
  40.         userList.add(users);   
  41.         users = null;   
  42.         users = new Users();   
  43.         users.setUserId(2);   
  44.         users.setUserName("rain");   
  45.         users.setSex("女人");   
  46.         userList.add(users);   
  47.         users = null;   
  48.         users = new Users();   
  49.         users.setUserId(3);   
  50.         users.setUserName("mimi");   
  51.         users.setSex("女人");   
  52.         userList.add(users);   
  53.         jsonResult = JsonUtil.listToJson(userList);   
  54.         System.out.println(jsonResult);   
  55.         return SUCCESS;   
  56.     }   
  57. }  
package com.jsontostruts2.action;

import java.util.ArrayList;
import java.util.List;

import com.googlecode.jsonplugin.annotations.JSON;
import com.jsontostruts2.util.JsonUtil;
import com.jsontostruts2.vo.Users;
import com.opensymphony.xwork2.ActionSupport;

/**
 * <p>
 * 创 建 人:ChenTao
 * <p>
 * 创建日期:2009-5-18 下午05:45:42
 * <p>
 */
@SuppressWarnings("serial")
public class UserListAction extends ActionSupport {
	
	/* 用于存放JSON生成后的字符串结果 */
	private String jsonResult;

	@JSON(name="JSONRESULT")
	public String getJsonResult() {
		return jsonResult;
	}

	public void setJsonResult(String jsonResult) {
		this.jsonResult = jsonResult;
	}

	@Override
	public String execute() throws Exception {
		List<Users> userList = new ArrayList<Users>();
		Users users = new Users();
		users.setUserId(1);
		users.setUserName("ctojxzsycztao");
		users.setSex("男人");
		userList.add(users);
		users = null;
		users = new Users();
		users.setUserId(2);
		users.setUserName("rain");
		users.setSex("女人");
		userList.add(users);
		users = null;
		users = new Users();
		users.setUserId(3);
		users.setUserName("mimi");
		users.setSex("女人");
		userList.add(users);
		jsonResult = JsonUtil.listToJson(userList);
		System.out.println(jsonResult);
		return SUCCESS;
	}
}

 

接下来将要写一个jsonList.JSP页面来将结果承现给用户

Html代码 复制代码
  1. <%@ page language="java" contentType="text/html;charset=UTF-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>json 返回列表处理</title>  
  6.     <script language="javascript">  
  7.         var xmlHttp = false;   
  8.         try{   
  9.             xmlHttp = new ActiveXObject("msxml2.XMLHTTP");   
  10.         }catch(e1){   
  11.             try{   
  12.                 xmlHttp = new ActiveXObject("microsoft.XMLHTTP");   
  13.             }catch(e2){   
  14.                 try{   
  15.                     xmlHttp = new XMLHttpRequest();   
  16.                 }catch(e3){   
  17.                     xmlHttp = false;   
  18.                 }   
  19.             }   
  20.         }   
  21.         if(!xmlHttp){   
  22.             alert("create xmlHttpRequest fail");   
  23.         }   
  24.         function jsonListResult(){   
  25.             xmlHttp.onreadystatechange = function(){   
  26.                 if(xmlHttp.readyState == 4) {   
  27.                     var userList = eval('(' + xmlHttp.responseText + ')');   
  28.                     var user = eval(userList.JSONRESULT);   
  29.                     var result = "<table border=0>";   
  30.                     result += "<tr><td>userId</td><td>userName</td><td>sex</td></tr>";   
  31.                     for(var i=0;i<user.length;i++) {   
  32.                         result += "<tr>";   
  33.                         result += "<td>"+user[i].userId +"</td>";   
  34.                         result += "<td>"+user[i].userName+"</td>";   
  35.                         result += "<td>"+user[i].sex+"</td>";   
  36.                         result += "</tr>";   
  37.                     }   
  38.                     result += "</table>";   
  39.                     document.getElementById('jsonDiv').innerHTML = result;   
  40.                 }   
  41.             }   
  42.             xmlHttp.open("POST","jsonlist.action",true);   
  43.             xmlHttp.send(null);   
  44.         }   
  45.     </script>  
  46.   </head>  
  47.   <body>  
  48.     <div id="jsonDiv"></div>  
  49.     <input type="button" value="show list" onclick="jsonListResult();">  
  50.   </body>  
  51. </html>  
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>json 返回列表处理</title>
	<script language="javascript">
		var xmlHttp = false;
		try{
			xmlHttp = new ActiveXObject("msxml2.XMLHTTP");
		}catch(e1){
			try{
				xmlHttp = new ActiveXObject("microsoft.XMLHTTP");
			}catch(e2){
				try{
					xmlHttp = new XMLHttpRequest();
				}catch(e3){
					xmlHttp = false;
				}
			}
		}
		if(!xmlHttp){
			alert("create xmlHttpRequest fail");
		}
		function jsonListResult(){
			xmlHttp.onreadystatechange = function(){
			    if(xmlHttp.readyState == 4) {
					var userList = eval('(' + xmlHttp.responseText + ')');
					var user = eval(userList.JSONRESULT);
					var result = "<table border=0>";
					result += "<tr><td>userId</td><td>userName</td><td>sex</td></tr>";
					for(var i=0;i<user.length;i++) {
						result += "<tr>";
						result += "<td>"+user[i].userId +"</td>";
						result += "<td>"+user[i].userName+"</td>";
						result += "<td>"+user[i].sex+"</td>";
						result += "</tr>";
					}
					result += "</table>";
                    document.getElementById('jsonDiv').innerHTML = result;
                }
			}
			xmlHttp.open("POST","jsonlist.action",true);
			xmlHttp.send(null);
		}
	</script>
  </head>
  <body>
  	<div id="jsonDiv"></div>
    <input type="button" value="show list" onclick="jsonListResult();">
  </body>
</html>

 现在将工程重复部署到WEB容器,启动:在浏览器中输入 http://localhost:8080/struts2ToJson/jsonList.jsp 点 show list按钮,看看结果

是否正确,如果不正确请参考本例程,看看有没漏掉部分没有配置进去,在以上代码中我们都有看到 @JSON 的注解,该注解可以改变JSON返回结果的属性名,好了文章就写到这里,需要下载示例的朋友可在附件中下载,里面包含有该文章的源代码和相应的 JAR

 

struts2ToJson.zip (3.2 MB)

 

 

 

转自:http://ctojxzsycztao.javaeye.com/blog/390949

struts2使用json返回对象和列表(案例) 立即下载

相关推荐

AJAX 想Struts2后台传送Json数据并向前台返回Json格式的数据

三种方式通过Struts后台传送数据,Struts标签库,form表单,ajax

Struts2与Ajax联合,返回list的问题

最近在做一个小系统,在尝试用Struts2框架下用Ajax技术进行异步刷新。主要配置如下:     Struts的配置文件:                                                                                     message,list.*                        

money9sun的博客 2698

struts2+json

该资源是使用struts2框架进行操作,返回json格式数据,前台通过ajax提交内容。

struts实现ajax,Struts 2中实现Ajax的三种方式

Ajax本质上和普通的HTTP请求是一样的,只不过普通的HTTP请求是给人看的,而Ajax请求是给JS代码去用的。所以Ajax请求的页面一般比普通的HTTP请求的响应内容还要简单,可能是一个页面的一部分,也可能是xml、json等结构化的数据,还可能是一个简单的字符串。所以,在Struts 2中使用Ajax,Action一般就不会调用一个jsp视图来显示了(如果Ajax请求内容是页面的一部分也可能...

weixin_34194482的博客 1091

STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控

本文详细介绍了如何使用STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控。从硬件选型、连接调试到乐联网平台配置和STM32程序开发,提供了完整的实现步骤和常见问题解决方案,适合物联网入门开发者参考。

weixin_30823001的博客 78

Excel地理探测器实战:5分钟搞定空间分异性分析(附完整数据集)

本文详细介绍了如何使用Excel地理探测器插件进行空间分异性分析。通过5分钟实战教程,手把手指导数据格式准备、软件操作及四大探测器(分异及因子、交互作用、风险区、生态探测器)的结果解读,帮助规划师、研究者快速验证地理因素对现象分布的影响,大幅降低GIS分析门槛。

peace的博客 608

strust2接受ajax前台传json对象

1.在Struts2的Action中提取Content-Type为application/x-www-form-urlencoded的POST参数,但是对Content-Type为application/json的请求数据,Struts2默认无法解析。因为请求的JSON数据需从输入流中读取出来,无法直接从ServletRequest的请求参数中解析。 2.利用struts2的模型驱动,ajax传...

hansplay的博客 598

Simulink与C/C++的无缝对接:自定义结构体变量导入实战指南

本文详细介绍了如何将C/C++自定义结构体导入Simulink环境,实现无缝数据对接。通过编写标准C头文件、配置MEX编译环境(如MinGW),并利用`Simulink.importExternalCTypes`函数,可将结构体转换为Simulink Bus对象,从而提升复杂系统模型的可读性、可维护性及仿真与代码生成效率。

weixin_29093017的博客 483

jQuery+json+struts2

转自:http://www.2cto.com/kf/201111/112000.html 结合使用jQuery和Json的话感觉不错,操作上来说很方便,先简单说说Json的一些优点,当然Json不仅仅这些优点 1.方便前台数据的操作。 2.数据体积小,传输快。 3.客户端操纵XML的时候需要创建ActiveX对象,Json则完全就是一个JS对象,它不需要创建DOM。 ...

thewebcode 167

IC/FPGA笔试/面试题分析(七)建立时间和保持时间类型考题汇总分析

自从召集2020届校招同行加入新建立的“IC/FPGA校招笔试面试交流群“,见识到了很多关于建立时间和保持时间分析的题目,在为别人解答疑惑,以及别人为自己解答疑惑的同时,自己对于知识的理解更加深刻了。 对于建立时间而言,从单独的对触发器的建立时间和保持时间的分析到了对电路(系统)的建立时间到保持时间的分析,前者是核心,后者是扩展,后者建立在前者的基础之上进行推到得到,同时也是芯片内部实际遵循的时...

Reborn Lee 1万+

【MicroPython编程-ESP32篇:设备驱动】-BNO08X系列传感器驱动

BNO08X 系列(BNO085/BNO086)是一款系统级封装 (SiP),集成了三轴加速度计、三轴陀螺仪、磁力计以及运行 CEVA SH-2 固件的 32 位 ARM® Cortex™-M0+ 微控制器。SH-2 包含 MotionEngine™ 软件,该软件提供复杂的信号处理算法来处理传感器数据,并提供精确的实时 3D 姿态、航向、校准加速度和校准角速度,以及更高级的上下文输出。BNO08X 集成在一个 28 引脚 LGA 封装中,尺寸为 3.8mm x 5.2mm x 1.1mm。它兼容 Andro

视觉与物联智能 696

struts2.1.8.1+jquery1.4.2返回json数据(action中避免使用get开头的action方法)

1、引入包(本文中的包全部引自struts-2.1.8.1\lib): struts2-json-plugin-2.1.8.1.jar json-lib-2.1.jar commons-collections-3.2.jar commons-beanutils-1.7.0.jar commons-lang-2.3.jar commons-logging-1.0.4.jar

336

Vite 任意文件读取漏洞复现(CVE-2026-39363)

Vite开发服务器 WebSocket中的fetchModule方法未实施server.fs访问控制,导致攻击者可通过WebSocket连接并读取服务器上的任意文件(CVE-2026-39363)

iSee857的博客 221

struts2.1.8中jsonplugin用法

转:http://abstractforever.iteye.com/blog/614777   正在研究,可是对json不是很熟,所以先研究哈。 导入所需jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar freemarker-2.3.15.jar json-lib-2.1.jar ognl-2.7.3.jar s...

bdk82924 127

API深度集成——OpenClaw与第三方服务无缝对接(2026实战版)

本文介绍了OpenClaw系统与第三方服务的API深度集成技术,重点阐述了RESTful API的实现方案。通过一个功能完善的REST客户端类(RestClient)展示了核心功能:支持请求重试、拦截器机制、错误处理和认证管理等;同时提供了API资源管理器(ApiResourceManager)简化资源操作。这些技术实现了OpenClaw与外部系统的稳定可靠对接,为开发者构建API集成方案提供了2026年的最佳实践。

博客 1215

倍福CX9020(WINCE 7)控制器使用方法和操作

CX9020系列是倍福控制器中较为经济的,操作系统为Windows Embedded Compact 7(简称WINCE7或WINEC7),相对高端控制器(WINES7以上系统),操作系统古老而简洁,上位机软件的编写困难很多,本文是笔者在使用过程中摸索的流程,旨在为CX9020系列的新用户提供参考,也可供其他CE系统的控制器参考。本文中大部分截图采用倍福中国的培训文档,这是由于笔者是在流程走通后再写这篇文章,不想再恢复出厂设置走一遍截图。因笔者在写这篇文章时使用倍福控制器经验并不丰富,难免有纰漏,请读者批评

weixin_41883890的博客 4287

2010.06.22(4)——— strtus2 + jquery ajax应用2

2010.06.22(4)——— strtus2 + jquery ajax应用2 参考:[url]http://huqilong.blog.51cto.com/53638/136802/[/url] Struts2下使用jsonplugin及jquery完成ajax功能 1. 从以下网址[url]http://code.google.com/p/jsonplugin/d...

105

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Struts2+Jquery实现ajax并返回json类型数据

主要实现步骤如下: 1、JSP页面使用脚本代码执行ajax请求 2、Action中查询出需要返回的数据,并转换为json类型模式数据 3、配置struts.xml文件 4、页面脚本接受并处理数据 关键有如下几个点 1.引入包:struts2对数据进行json序列化,必须要用到struts2的json-lib,struts2-json-plugin包; 2.j

shuaishuai123485615的专栏 3566

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Struts2 json ajax动态显示列表

Struts2 json ajax动态显示列表

3381

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用简介
prostore
博客等级 码龄18年 0粉丝 2原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值