`
dreamoftch
  • 浏览: 498425 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2和json的集成

阅读更多

 

 

参考资料:

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

 

完事。

 

最后附上代码:

http://pan.baidu.com/s/1I8n2

分享到:
评论

相关推荐

    struts2和json集成的一个小示例

    在本示例中,我们将探讨如何将Struts2与JSON集成,以实现高效、灵活的数据交互。 首先,理解Struts2中的Action类是关键。Action类是处理用户请求的核心,它定义了业务逻辑并返回一个结果。为了使Struts2能够返回...

    struts2+json

    在Struts2中集成JSON支持,首先需要添加相应的依赖,比如struts2-json-plugin,这个插件提供了JSON结果类型。当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    - 插件集成:此插件使得Struts 2可以无缝集成JSON支持,无需额外的配置。 - JSON Action:允许Action返回JSON结果,而不是HTML,这对于AJAX请求非常有用。 - 自动映射:自动将Action的属性映射到JSON对象,简化了...

    struts2与json整合

    在探讨“Struts2与JSON整合”的主题时,我们深入分析了如何在Struts2框架中集成JSON技术,实现前后端数据的高效交互。Struts2作为一款流行的Java Web开发框架,提供了丰富的功能来简化Web应用程序的开发过程。而JSON...

    struts2+json/ajax

    测试文件可能包括JUnit测试用例,用于验证Struts2和JSON集成的功能是否正常工作,以及Ajax请求是否能正确地与服务器进行通信并接收预期的JSON响应。 通过这种整合,开发者可以利用Struts2的强大功能处理后端业务...

    struts2-json

    下面我们将深入探讨Struts2集成JSON的相关知识点。 1. **Struts2 JSON插件**: Struts2提供了JSON插件,允许开发者在Action类中返回JSON响应。安装插件后,只需在Action配置中启用JSON支持,就能自动处理JSON输出...

    struts2所需的包和Struts2_json所需包

    而Struts2与JSON的集成则进一步增强了其功能,使得数据交换更为简洁,特别是在AJAX和移动应用中。 在标题和描述中提到的"struts2所需的包和Struts2_json所需包",主要是指为了实现Struts2框架与JSON数据交互所需要...

    struts2-json-plugin-2.3.8.jar

    3. 集成了Jackson库:默认情况下,Struts2 JSON Plugin使用Jackson库进行JSON序列化和反序列化,Jackson是一个高性能的JSON处理库,提供了丰富的API和灵活性。 4. 异常处理:在出现异常时,插件可以自动捕获并返回...

    Struts2_JSON_Demo

    在"Struts2_JSON_Demo"项目中,你可以通过分析源代码,了解上述各个步骤的实现细节,从而深入理解Struts2和JSON的交互。这个示例项目将帮助你掌握如何在实际项目中有效地使用Struts2和JSON,提升Web应用的性能和用户...

    struts2-json-lib

    总之,"struts2-json-lib"提供了实现Struts2和JSON整合所需的全部组件,简化了在Java Web应用中处理JSON数据的过程。正确地配置和使用这些库,可以大大提升开发者的生产力,让Web应用具备更强大的数据交互能力。

    struts2+json的使用

    一、Struts2与JSON集成的必要性 在传统的Web开发中,服务器通常返回HTML页面来更新客户端视图。然而,随着AJAX(Asynchronous JavaScript and XML)技术的发展,现在更倾向于异步请求,只更新部分页面内容。JSON...

    struts2和json的jar包

    Struts2和JSON是两种在Java Web开发中广泛使用的技术。Struts2是一个基于MVC(Model-View-Controller)架构的开源框架,用于构建高效、可扩展且易于维护的企业级Web应用程序。JSON(JavaScript Object Notation)则...

    struts2 相关jar包 包含json-lib-2.1.jar+struts2-json-plugin-2.1.8.1.jar

    这个压缩包包含了两个关键的组件: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时要添加的jar包

    在Struts2中集成JSON(JavaScript Object Notation)技术可以使得后端数据与前端交互更加高效,特别是对于AJAX请求。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Struts2中使用...

    ExtJs + Struts2 + JSON 程序总结

    Struts2 提供了强大的拦截器(Interceptor)机制和灵活的配置,能够方便地集成各种视图技术,如JSP、FreeMarker或 Velocity。在这里,它被用来处理EXTJS发起的数据请求,并返回JSON格式的数据。 JSON 是一种轻量级...

    struts2 json

    Struts2集成JSON使得Web应用能够通过AJAX(异步JavaScript和XML)技术实现动态、无刷新的数据交互,提升用户体验。 Struts2的核心是Action,它是业务逻辑和视图之间的桥梁。当结合JSON,Action可以返回JSON格式的...

    struts2-json-plugin-2.1.8.1.jar

    Struts2 JSON Plugin是Apache Struts框架的一个...通过配置"struts-plugin.xml",使用自定义的TLD标签,以及利用提供的类和接口,开发者可以有效地集成JSON支持到他们的Struts2应用中,提升Web应用的动态性和交互性。

    struts2的json插件

    4. **与AJAX集成**:JSON插件使得Struts2与jQuery、Dojo等库的AJAX请求无缝集成,能够快速响应前端的动态请求。 在提供的压缩包中,有两个不同版本的JSON插件:`jsonplugin-0.34.jar` 和 `jsonplugin-0.32.jar`。...

Global site tag (gtag.js) - Google Analytics