参考资料:
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集成,以实现高效、灵活的数据交互。 首先,理解Struts2中的Action类是关键。Action类是处理用户请求的核心,它定义了业务逻辑并返回一个结果。为了使Struts2能够返回...
在Struts2中集成JSON支持,首先需要添加相应的依赖,比如struts2-json-plugin,这个插件提供了JSON结果类型。当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给...
- 插件集成:此插件使得Struts 2可以无缝集成JSON支持,无需额外的配置。 - JSON Action:允许Action返回JSON结果,而不是HTML,这对于AJAX请求非常有用。 - 自动映射:自动将Action的属性映射到JSON对象,简化了...
在探讨“Struts2与JSON整合”的主题时,我们深入分析了如何在Struts2框架中集成JSON技术,实现前后端数据的高效交互。Struts2作为一款流行的Java Web开发框架,提供了丰富的功能来简化Web应用程序的开发过程。而JSON...
测试文件可能包括JUnit测试用例,用于验证Struts2和JSON集成的功能是否正常工作,以及Ajax请求是否能正确地与服务器进行通信并接收预期的JSON响应。 通过这种整合,开发者可以利用Struts2的强大功能处理后端业务...
下面我们将深入探讨Struts2集成JSON的相关知识点。 1. **Struts2 JSON插件**: Struts2提供了JSON插件,允许开发者在Action类中返回JSON响应。安装插件后,只需在Action配置中启用JSON支持,就能自动处理JSON输出...
而Struts2与JSON的集成则进一步增强了其功能,使得数据交换更为简洁,特别是在AJAX和移动应用中。 在标题和描述中提到的"struts2所需的包和Struts2_json所需包",主要是指为了实现Struts2框架与JSON数据交互所需要...
3. 集成了Jackson库:默认情况下,Struts2 JSON Plugin使用Jackson库进行JSON序列化和反序列化,Jackson是一个高性能的JSON处理库,提供了丰富的API和灵活性。 4. 异常处理:在出现异常时,插件可以自动捕获并返回...
在"Struts2_JSON_Demo"项目中,你可以通过分析源代码,了解上述各个步骤的实现细节,从而深入理解Struts2和JSON的交互。这个示例项目将帮助你掌握如何在实际项目中有效地使用Struts2和JSON,提升Web应用的性能和用户...
总之,"struts2-json-lib"提供了实现Struts2和JSON整合所需的全部组件,简化了在Java Web应用中处理JSON数据的过程。正确地配置和使用这些库,可以大大提升开发者的生产力,让Web应用具备更强大的数据交互能力。
一、Struts2与JSON集成的必要性 在传统的Web开发中,服务器通常返回HTML页面来更新客户端视图。然而,随着AJAX(Asynchronous JavaScript and XML)技术的发展,现在更倾向于异步请求,只更新部分页面内容。JSON...
Struts2和JSON是两种在Java Web开发中广泛使用的技术。Struts2是一个基于MVC(Model-View-Controller)架构的开源框架,用于构建高效、可扩展且易于维护的企业级Web应用程序。JSON(JavaScript Object Notation)则...
这个压缩包包含了两个关键的组件:json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar,它们是Struts2支持JSON(JavaScript Object Notation)序列化和反序列化的关键。 1. **json-lib-2.1.jar**: JSON是一种轻...
在Struts2中集成JSON(JavaScript Object Notation)技术可以使得后端数据与前端交互更加高效,特别是对于AJAX请求。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Struts2中使用...
Struts2 提供了强大的拦截器(Interceptor)机制和灵活的配置,能够方便地集成各种视图技术,如JSP、FreeMarker或 Velocity。在这里,它被用来处理EXTJS发起的数据请求,并返回JSON格式的数据。 JSON 是一种轻量级...
Struts2集成JSON使得Web应用能够通过AJAX(异步JavaScript和XML)技术实现动态、无刷新的数据交互,提升用户体验。 Struts2的核心是Action,它是业务逻辑和视图之间的桥梁。当结合JSON,Action可以返回JSON格式的...
Struts2 JSON Plugin是Apache Struts框架的一个...通过配置"struts-plugin.xml",使用自定义的TLD标签,以及利用提供的类和接口,开发者可以有效地集成JSON支持到他们的Struts2应用中,提升Web应用的动态性和交互性。
4. **与AJAX集成**:JSON插件使得Struts2与jQuery、Dojo等库的AJAX请求无缝集成,能够快速响应前端的动态请求。 在提供的压缩包中,有两个不同版本的JSON插件:`jsonplugin-0.34.jar` 和 `jsonplugin-0.32.jar`。...