struts返回json数据
想要在struts中返回json格式数据有两种办法。
1.使用servlet的输出流
实际上就是在struts中获取response对象的输出流。然后写入你要返回的json数据,本质和用servlet返回json数据是一样的,需要自己导入json的jar包。不做详细介绍。
2.试用struts对json的扩展
这里需要两个jar包,xwork-core-2.1.6.jar和struts2-json-plugin-2.1.8.jar。如果是用MyEclipse注入的struts环境就不需要手动了。下面以一个例子讲解。
package action; import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.struts2.json.annotations.JSON; import com.opensymphony.xwork2.ActionSupport; import entity.Outbox;
import util.DaoFactory; public class SendBoxJson extends ActionSupport {
private static final long serialVersionUID = 1L;
private Map<String,Object> data;
private String state; private String userId;
private String searchType;
private String keyValue;
private String start;
private String end; public Map getData() {
return data;
} public String getState() {
return state;
} public void setUserId(String userId) {
this.userId = userId;
} public void setSearchType(String searchType) {
this.searchType = searchType;
} public void setKeyValue(String keyValue) {
this.keyValue = keyValue;
} public void setStart(String start) {
this.start = start;
} public void setEnd(String end) {
this.end = end;
} public String getJson() throws Exception {
List<Outbox> list = DaoFactory.getOutBoxDaoInstance().getOutMails(userId, searchType, keyValue, start, end);
state="success";
data=new HashMap<String,Object>();
data.put("data", list);
data.put("state",state);
System.out.println(data);
return "heihei";
}
}
上面的是一个普通的struts类,没什么特殊之处。重点在struts的配置文件中。
<package name="json" namespace="/" extends="struts-default,json-default">
<action name="json" class="action.SendBoxJson" method="getJson"> <result name="heihei" type="json"> <!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
<param name="root">data</param>
<!-- 指定是否序列化空的属性 -->
<param name="excludeNullProperties">true</param>
<!-- 这里指定将序列化list中的那些属性 -->
<!-- <param name="includeProperties">data.*</param> -->
<!-- 这里指定将要从list中排除那些属性,这些排除的属性将不被序列化,一般不与上边的参数配置同时出现 -->
<!-- <param name="excludeProperties">id</param> -->
</result>
</action>
</package>
在配置中,首先需要action所在的package继承了json-default,或者继承的父包继承了json-default。然后result里多了个type=“json”这是说明返回的是json字符串。
<param name="root">data</param>要讲data这个变量序列化后返回,data是上面struts类中一个变量。
注意如果data类型为list,需要使用
<param name="includeProperties">data.*</param>来指定,否则返回的json字符串会为空。
如果想要忽略对象的某个属性,可在属性的get方法加@JSON(serialize=false) ,常用在hibernate的实体中,如果返回的是hibernate实体,该实体又用到了另一个实体,就会因为懒加载的原因序列化失败(自行百度),就需要在某些属性加上上面的注释。

上面的set是一对多关系的表示.
struts返回json数据的更多相关文章
- 【自制工具类】struts返回json数据包装格式类
自己写的一个给struts返回的json数据包装格式类,不喜勿喷,原创,需在项目中引入com.alibaba.fastjson的jar包 先看下效果(这里没有使用msg,有兴趣的往下看): 上demo ...
- struts框架返回json数据
设置返回result类型为json格式 <package name="cn.konngo.action" namespace="/" extends=&q ...
- 深入了解Struts2返回JSON数据的原理
首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
- J2EE Web开发入门—通过action是以传统方式返回JSON数据
关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ...
- Struts2返回Json数据(使用Struts2插件)
这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据. 一.其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的&q ...
- 【Struts2】SSH如何返回JSON数据
在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...
- (转)Struts2返回JSON数据的具体应用范例
转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...
- Struts2返回JSON数据的具体应用范例
早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找 ...
随机推荐
- CLR via C# 读书笔记-26.线程基础
前言 这俩个月没怎么写文章做记录分享,一直在忙项目上线的事情,但是学习这件事情,停下来就感觉难受,clr线程这章也是反复看了好多遍,书读百遍其义自见,今天我们来聊下线程基础 1.进程是什么,以及线程起 ...
- [android] 手机卫士黑名单功能(ListView优化)
上一篇记录了使用ListView展示出来了100条数据,当慢慢拖动的时候,不会有问题,但是当拖动很快的时候,应用会报anr错误 查看错误日志,看到报OutOfMemoryError,内存不足 List ...
- 简单说说SpringMVC
距离上一次开发SpringMVC项目已经过去了大半年,有些细节已经开始遗忘,今天复习一下 先从标签说起: 和struts有各种配置文件不同,spring用标签开发. 1.@Controller在Spr ...
- 如何优雅的爬取 gzip 格式的页面并保存在本地(java实现)
1. 引言 在爬取汽车销量数据时需要爬取 html 保存在本地后再做分析,由于一些页面的 gzip 编码格式, 获取后要先解压缩,否则看到的是一片乱码.在网络上仔细搜索了下,终于在这里找到了一个优雅的 ...
- 算法 - 排序数组中与x最近一点
条件: a[j] + a[j+1] < x*2 int findClosestPoint(int x,int a []) { int res = 0; int j = 0; while(j< ...
- 使用github搭建个人html网站
前言:搭建个人网站早就想做了,最近有空就宅在家学习,突然发现github就可以搭建个人的纯html网站,于是开始了这项工作.转载请注明出处:https://www.cnblogs.com/yuxiao ...
- 设计模式学习——代理模式(Proxy Pattern)之 强制代理(强校验,防绕过)
上周温习了代理模式:http://www.cnblogs.com/chinxi/p/7354779.html 在此进行拓展,学习强制代理.但是发现网上大多例子都有个“天坑”(我是这么认为的),在得到代 ...
- Algorithm——两个排序数组的中位数
ps:城际的网速还是不错的-
- 基于token的后台身份验证(转载)
几种常用的认证机制 HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RES ...
- 解决ie6、ie7下float为right换行的情况
IE6下有不少奇怪的Bug,今天就碰到一个,float:right换行bug,情况是并列的几个块级元素如div和span,一些设置了左浮动一些设置右浮动,一行的宽度足够放下所有的块级元素,但此时ie6 ...