参考资料:
http://struts.apache.org/release/2.3.x/docs/json-plugin.html
注意:
步骤
1.引入jar包
2.struts.xml中加入自定义的package:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="json-package" extends="json-default" abstract="true"> <interceptors> <!-- 定义自己的拦截器栈 --> <interceptor-stack name="my-interceptor-stack"> <!-- 将json拦截器加进来 --> <interceptor-ref name="json" /> <!-- 这个默认拦截器栈不要忘了加上 --> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <!-- 将自定义的拦截器栈设为默认拦截器栈 --> <default-interceptor-ref name="my-interceptor-stack"/> </package> <package name="default" namespace="/LBAdmin/onlineservice" extends="json-package"> <action name="xxx" class="yyy" method="xxx"> <result name="json" type="json"> <param name="root">jsonResult</param> </result> </action> </package> </struts>
上面就可以将action中的jsonResult属性以json格式返回
3.上面只是获取json结果,另外还有就是请求中携带的json格式的数据传递给action里面的属性中,这就需要在jquery的ajax请求中设置一下了:
假如下面的data是一个json数据,例如: var data = {}; var user = {}; user.age = 23; user.sex = '男'; data.user1 = user; 这种格式的话:
首先需要将使用JSON.stringify(data)处理一下(需要引入JSON2.js),然后就是ajax请求里面需要指定 contentType 为 application/json 的格式;
data = JSON.stringify(data); $.ajax({ type:"post", url:url, data:data, dataType:"json", contentType:"application/json", success:callback });
首先引入jar包
struts2-json-plugin-2.x.x.jar
Maven的引入方式:
<dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.x.x</version> </dependency> </dependencies>
我使用的版本号是 2.3.12
struts2-json-plugin-2.3.12.jar
然后在struts.xml中的package继承json-default:
<package name="default" namespace="/" extends="json-default"> </package>
这样就可以使用
<result type="json"></result>
了
例如:struts.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="json-default"> <action name="json" class="com.tch.test.json.action" method="json"> <!--默认会把所有的具有get方法的变量都放到json结果中--> <result type="json"></result> </action> <action name="json2" class="com.tch.test.json.action" method="json"> <result type="json"> <!--这样就可以只把指定的变量customName放到json结果中--> <param name="root"> customName </param> </result> </action> </package> </struts>
对应的action:
package com.tch.test.json.action; import java.util.HashMap; import java.util.Map; import org.apache.struts2.json.annotations.JSON; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport { private static final long serialVersionUID = 1L; private String field1 = "str"; private int[] ints = {10, 20}; private Map<String,String> map = new HashMap<String,String>(); private String customName = "custom"; //'transient' fields are not serialized private transient String field2; //fields without getter method are not serialized private String field3; public String json(){ return SUCCESS; } public String getField1() { return field1; } public void setField1(String field1) { this.field1 = field1; } public int[] getInts() { return ints; } public void setInts(int[] ints) { this.ints = ints; } public Map<String,String> getMap() { return map; } public void setMap(Map<String,String> map) { this.map = map; } @JSON(name="newName")//这是为了让json现实的变量名为指定的值newName而不是默认的customName public String getCustomName() { return this.customName; } }
然后部署访问json:http://localhost:8080/test/json
结果为:{"newName":"custom","field1":"str","ints":[10,20],"map":{}}
然后部署访问json:http://localhost:8080/test/json2
结果为:"custom"
然后在页面中使用ajax测试一下:
首先访问json:
$.getJSON('json.action',function(data){ alert(data.newName); });
结果为:custom
然后访问json2:
$.getJSON('json2.action',function(data){ alert(data[1]); });
结果为 20
完事。
最后附上代码:
相关推荐
struts2和json的一个小示例,下载后可运行,适合学习json的初学者
struts2_json_jquery_集成详解
json与struts2.1.8.1集成时要用的包
4、部署后可以使用http://localhost:8080/appName/usertest.action进行访问测试struts2和json 5、使用http://localhost:8080/appName/services/*,可以查看到所有发布的WebService接口 6、项目中都未使用到...
使用ext2.2 struts2集成生成的一棵树,主要是对struts2返回json数据进行一些处理,树使用ext本身自带的例子
非常实用的直接运行就OK了。 省市区级联无刷新。。。关联json. 集成系统里边也非常方便,实用。
本人一直用这架包开发. 绝对不会出错.适用于集成struts2开发.
这段时间学习mongo数据库,花点时间搭了个框架,资源是myeclipse10整个工程包,有问题随便问。
此是简单几个技术集成..只完成了简单功能,测试可行.适合刚接触的童鞋,
附件是我平时对一些技术的Demo,包含 Struts2 Hibernate Spring集成,涉及到CXF JSON FreeMarker等技术,SSH2使用的Struts2的零配置。有兴趣的可以下载研究学习。
介绍参见:http://blog.csdn.net/kknd713/article/details/9113743
struts spring hibernate jquery json poi httpclient
struts2集成jsonplug。 是个eclipse工程,可以直接导入使用,包含所有的jar包,还有一份操作记录文档。
3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录进行显示。 5.单数据源配置(兼容Tomcat和Weblogic)。 6.Hibernate...
11.1 Struts 2框架和Java i18n 241 11.1.1 使用ResourceBundle和Locale取得本地化文本 241 11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts 2 i18n快速展示 244 ...
在原来的项目中集成juery的ajax功能,返回json串,结果报了一大堆版本冲突以及jar包缺失的问题,在网上查了老半天资料终于成功了,附传资源包以及我做的小例子大家共享下,注意版本一定要对应上。另外在ajax等待页面...
extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json...
数据库mysql ,学习做的小项目,用到了struts2 spring jpa ajxa dojo 等技术 内部有一个页面是集成使用了json+extjs,也实现了增删改查 希望对大家学习有所帮助
在当今——Web 2.0概念铺天盖地的Internet环境下,简易的AJAX集成对于一个... <br>最近在Musachy Barroso等同志的无私奉献下,开发了Struts 2的JSON插件(Plugin),极大地方便了我们输出JSON结果(Result)。
Struts 2其中的一个重要的功能(Feature)就是“First-class AJAX support - Add interactivity and flexibility with AJAX tags that look and feel just like standard Struts tags(大意:一流的AJAX支持——通过...