Struts2返回Json数据(使用Struts2插件)
这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据。
一、其中主要步骤有:
1.将struts2-json-plugin.jar插件拷贝到项目的"/WEB-INF/lib"文件夹下;
2.编写Action类文件;
3.在struts.xml文件中配置这个Action,这个Action所在的"<package.../>"必须继承”json-default“, Action 的 Result 类型为 json ,即 type="json" ,而且不对应任何视图资源。
二、示例代码:
Action类文件:
package com.example.action;
import java.util.ArrayList;
import com.opensymphony.xwork2.ActionSupport;
public class StrutsJsonAction extends ActionSupport {
private int i=123;
private String str="str";
private int[] array={1,2,3};
private ArrayList<String> list;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public int[] getArray() {
return array;
}
public void setArray(int[] array) {
this.array = array;
}
public ArrayList<String> getList() {
return list;
}
public void setList(ArrayList<String> list) {
this.list = list;
}
public String execute(){
list = new ArrayList<String>();
list.add("red");
list.add("green");
list.add("yellow");
return SUCCESS;
}
}
struts.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="json-example" namespace="/" extends="json-default">
<action name="JSONExample" class="com.example.action.StrutsJsonAction">
<result name="success" type="json"/>
</action>
</package>
</struts>
然后在浏览器中访问" http://localhost:8080/Struts2_JSON/JSONExample ",显示结果如图:

JSON 插件会将所有可序列化 Action 属性序列化为 JSON 数据。
三、配置常用JSON类型的Result
浏览器是否缓存JSON
<result type="json">
<!-- 取消浏览器缓存-->
<param name="noCache">true</param>
</result>
设置浏览器响应类型,默认为text/html
<result type="json">
<!-- 设置服务器响应类型-->
<param name="contentType">application/json</param>
</result>
排除值为 null 的属性
<result type="json">
<!--排除值为null的属性-->
<param name="excludeNullProperties">true</param>
</result>
只序列化指定的Action属性
<result type="json">
<!--只序列化Action内的list属性-->
<param name="root">list</param>
</result>
序列化包含的属性(逗号分隔的正则表达式列表)
<result type="json">
<!--序列化list属性-->
<param name="includeProperties">list.*</param>
</result>
<result type="json">
<!--序列化array属性,\[和\]匹配数组的[]括号,\d匹配数字,+表示一次或多次-->
<param name="includeProperties">array\[\d+\]</param>
</result>
排除不需要被序列化的属性(逗号分隔的正则表达式列表)
<result type="json">
<!--排除list属性-->
<param name="excludeProperties"> list.* </param>
</result>
Struts2返回Json数据(使用Struts2插件)的更多相关文章
- 深入了解Struts2返回JSON数据的原理
首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...
- (转)Struts2返回JSON数据的具体应用范例
转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...
- Struts2返回JSON数据的具体应用范例
早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找 ...
- Struts2返回JSON数据的具体应用范…
Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2JSON 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...
- Struts2返回json数据xml中配置
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...
- struts2返回json数据
<!-- ajax注册 --> <package name="jsonstruts2" namespace="/json" extends=& ...
- 转:Struts2返回JSON数据的具体应用范例
http://blog.csdn.net/jspamd/article/details/8810109 纠错: <result type="json" name=" ...
- Struts2返回JSON对象的方法总结
如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择.而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好 ...
- (转)Struts2返回JSON对象的方法总结
转自:http://kingxss.iteye.com/blog/1622455 如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选 ...
随机推荐
- Linux主机规划与磁盘分区
各硬件设备在Linux中的文件名 在Linux系统当中,几乎所有的硬件设备文件都在/dev这个目录内. 各硬件设备在Linux中的文件名: 设备 设备在Linux中的文件名 IDE接口的硬盘 /dev ...
- 对于ios7扫描二维码功能的实现
在ios7曾经,我们开发二维码扫描,或者生产都须要借助第三方的开源库进行开发. 然后升级到ios7时,在passbook中苹果自带二维码扫描功能,并且扫描速度很快,秒杀一切第三方开源库. 所以,我们做 ...
- 2014:超越炒作,进入部署SDN的时代
2013 年,我们看到了非常多新的SDN 产品.体系结构.营销活动和各种会议,一些新的标准和开源组织也进入了这个领域.当时的SDN 刚刚从炒作周期的高点回归下来.转眼到了2014 年,这一年我们会看到 ...
- ffmpeg+SDl+ 播放器 -01
最近因公司项目需要,打算自己在LINUX平台整一个播放器,来学习和研究音频编解码. 项目需求: 支持下列格式文件播放. 1> WMA 硬件解码,但需要软件分析ASF格式,提取Payload数据 ...
- Swift流程控制之循环语句和判断语句详解
Swift提供了所有c类语言的控制流结构.包括for和while循环来执行一个任务多次:if和switch语句来执行确定的条件下不同的分支的代码:break和continue关键字能将运行流程转到你代 ...
- 【精度问题】【HDU2899】Strange fuction
Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- php get_magic_quotes_gpc() addslashes()
最近学了学PHP,看到这段代码 function daddslashes($str){ return (!get_magic_quotes_gpc())?addslashes($str): ...
- (原)前端知识杂烩(meta系列)
更新于 20160831 1. meta 移动端头文件设置 (一般情况下,逐条复制放在头部就可以了) 1.1 强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏 ...
- Mac下Mysql启动异常["ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"]
在mac下使用brew安装mysql,之前没有使用过,今天启动的时候发现启动不了 huijundeMacBook-Pro:bin huijunzhang$ mysql ERROR (HY000): C ...
- 黑科技——编写一个无法卸载的App
之前经常听到朋友或者新闻媒体上报道说,有的朋友的android手机中病毒了,出现了软件无法卸载的情况,对于我这样一个从事android开发程序员来说,我还不是太相信(毕竟自己还是有点菜,哈哈).今天在 ...