`
peng_joy
  • 浏览: 109959 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Struts2返回JSON对象总结

    博客分类:
  • JAVA
阅读更多
1.导入jsonplugin包

  Struts2.1.6:导入jsonplugin-0.34.jar包(下载包)和commons-logging-1.0.4.jar(Struts2 lib下有)
  Struts2.1.8导入struts2-json-plugin-2.1.8.1.jar(Struts2 lib下有)
  Struts2.2.1导入struts2-json-plugin-2.2.1.jar(Struts2 lib下有)

2.struts.xml中package 中extends="json-default"
 
<package name="json" namespace="/json" extends="json-default">


3.result 中type="json"
 
<!-- 封装所有的get开头的方法 -->
<result type="json" name="user">
</result>

<!-- 只包含user.id属性 -->
<result type="json" name="user">
    <param name="includeProperties">               
        user\.id
    </param>
</result>

<!-- 返回user的JSON List列表,其中userInfosList是action中的一个List类型的属性,userInfosList \[\d+\]\. userName表示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)
-->
<result  name="success" type="json">
<param name="includeProperties">
	userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password
</param>
</result>

<!-- 不包含user属性 -->
<result type="json" name="list">
    <param name="excludeProperties">               
        user
    </param>
</result>

<!-- 根对象只包含user -->
<result type="json">  
    <param name="root">  
        user
    </param>  
</result> 

<!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,如果不想这样做,需要在配置时指定 ignoreHierarchy 为 false:  -->
<result type="json">  
    <param name="ignoreHierarchy">false</param>  
</result> 
  


4.避免使用get开头的action方法
  在属性get方法上面加
  @JSON(name="newName")json中的名称
  @JSON(serialize=false) 该属性不被加入json
  @JSON(format="yyyy-MM-dd") 格式化日期

5.在action中赋值,返回对应的result字符串

说明:
为什么要用includeProperties或excludeProperties 参数:主要是为了过滤掉接口,pojo的set、list、其它对象等不需要的数据防止循环取其它关联对象或找不到接口。如果不配置,默认是处理action中的所有属性,如果action中有接口注入,json拦截器可能找不到接口而返回不了结果,还有如果action中有一个对象,这个对象与好多对象都有关联,json拦截器会将相关联的所有对象的属性全部转换成json格式,如果其它对象有list、set,其返回结果相当庞大,有可能是死循环而无法返回 。如果不用<param name="includeProperties">或其他方式进行json数据过滤,通过debug你会发现前台返回的json字符串,是把action中的所有属性全部转化成json字符串返回给客户端(包括service接口、pojo所有属性及有关联的pojo。有时候根本返回不了结果,也不报错,后台执行了,但前台执行不到callback function,这主要是因为找不到接口或者关联的pojo太多,造成死循环),一般情况下用的最多的就是root、includeProperties 和excludeNullProperties参数。当然还有其他的方法,如给pojo的属性加json注解。

总结:
action中避免使用get开头的action方法,去掉action中的接口的get方法。 为json类型的result配置includeProperties, excludeProperties等参数.
分享到:
评论
2 楼 peng_joy 2012-05-29  
zjc198805 写道
LZ,我采用的struts2 无配置的情况,我该怎么配置includeProperties?求指教!小弟QQ:644952013

无配置的struts2真没用过,不好意思。无配置,也在往ROR的模式靠拢了啊,个人觉得注解太多会让项目难于维护。
1 楼 zjc198805 2012-04-18  
LZ,我采用的struts2 无配置的情况,我该怎么配置includeProperties?求指教!小弟QQ:644952013

相关推荐

    Struts2返回JSON对象的方法总结完整实例

    但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要用开发基于Struts2的HTTP+JSON返回... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。

    struts2返回JSON数据的两种方式

    总结,Struts2中返回JSON数据有两种主要方式:一是通过`response.getWriter().print()`手动输出JSON字符串;二是利用Struts2的内置JSON插件,通过返回特定的属性和结果类型自动处理JSON。每种方法都有其适用场景,...

    Struts2 返回json对象

    Struts2 返回 JSON 对象 Struts2 是一个基于 MVC 模式的 Java Web 应用程序框架,它提供了一个强大的机制来处理用户的请求和响应。在 Struts2 中,返回 JSON 对象是通过 JSON 插件来实现的,这个插件提供了一个可以...

    struts2返回json

    在Struts2中,返回JSON(JavaScript Object Notation)数据类型是一种常见的需求,尤其是在开发AJAX或者前后端分离的应用时。JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送结构化的数据,而无需解析...

    Struts2返回JSON对象.doc

    在Struts2框架中,返回JSON对象是一种常见的数据传输方式,特别是在前后端分离的开发模式下。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。以下将...

    struts2+json

    当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给前端。 接着,我们讨论AJAX。AJAX是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。在本资源中,...

    Struts2返回JSON对象

    Struts2返回JSON对象是一种常见的做法,特别是在构建Web应用程序时,需要与前端进行异步通信,比如实现Ajax功能。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...

    Struts2返回JSON对象.docx

    总结来说,Struts2返回JSON对象涉及以下几个关键点: 1. 引入必要的库,包括Struts2的JSON插件和其他Apache Commons库。 2. 创建Action类,定义返回JSON数据的方法。 3. 配置Struts2 XML,指定Action的返回类型为...

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

    这个插件允许开发者在Struts 2中轻松地创建能够返回JSON的Action,使得前端(通常使用JavaScript库如jQuery)可以获取到JSON数据并进行进一步处理。 现在我们来详细讨论这两个库在实际应用中的作用: 1. **json-...

    ExtJs + Struts2 + JSON 程序总结

    通过Struts2处理后端逻辑并返回JSON数据,EXTJS能够动态地更新页面,呈现复杂的数据结构,从而提高用户体验。这种技术栈在现代企业级Web开发中非常常见,因为它能够简化数据交互,同时保持良好的性能和可维护性。

    struts2返回json数据的方法一 使用json-default

    本篇文章将详细讲解如何在Struts2中使用“json-default”拦截器来返回JSON数据。 首先,我们需要理解Struts2的拦截器(Interceptor)机制。拦截器是Struts2框架的核心组件之一,它们在Action执行前后执行特定的任务...

    struts2与json整合

    为了返回JSON数据,可以定义一个如下的Action方法: ```java public String getXxx() { return "aaa"; } ``` 当客户端调用此方法时,Struts2会自动将返回值 `"aaa"` 转换成JSON格式,即`{"xxx":"aaa"}`,发送回...

    struts2-json-plugin源码

    在执行过程中,它会遍历Action的属性,将它们转换成JSON对象,并写入到HTTP响应中。 3. **JSON插件配置**:在`struts-plugin.xml`配置文件中,会注册JSON插件,声明结果类型和其他相关设置,如启用GZIP压缩、排除...

    struts2使用json返回对象和列表(案例)

    在Struts2的配置文件(通常是struts.xml)中,需要为Action配置一个返回JSON结果的类型。例如: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; ...

    struts2-json-plugin-2.3.8.jar

    该插件的核心作用在于,它扩展了Struts2框架,使得Action类可以直接返回JSON响应,而无需额外的代码处理。在Struts2中,你可以通过在Action类的方法上添加特定的注解,如`@Result(type = "json")`,来指示该方法应该...

    Struts2+Json+Android简单实现

    1. **服务端**:在Struts2的Action类中,定义一个方法处理请求,该方法可能需要访问数据库或其他业务逻辑,然后将结果转化为JSON对象。通过配置struts.xml,设定这个方法返回JSON类型的结果。 2. **客户端**:在...

    struts2-json

    Struts2提供了JSON插件,允许开发者在Action类中返回JSON响应。安装插件后,只需在Action配置中启用JSON支持,就能自动处理JSON输出。 2. **Action配置**: 在Struts2的配置文件(struts.xml或struts.properties)...

    Struts2+JSON_实现AJAX_返回对象和列表

    当用户发起AJAX请求,Struts2会调用这个Action,然后返回JSON化的`users`对象。 要实现返回结果列表,你可以在`UserAction`中添加一个列表属性,例如`List&lt;Users&gt;`,并填充数据。然后在返回的JSON中,这个列表会被...

    Struts2返回JSON对象[参考].pdf

    ### Struts2返回JSON对象详解 #### 一、前言 在Web开发中,前后端交互数据时,JSON格式的数据由于其简洁性和易读性,成为了一种非常流行的选择。Struts2作为Java Web开发中常用的框架之一,支持多种方式返回JSON...

Global site tag (gtag.js) - Google Analytics