关于json的介绍
由于项目中使用到了jqgrid组建以及ajax的异步提交等,有时候可能会需要后台往前台返回的是一个json格式的结果。因此我引入了jsonplugin-0.32的jar包。
json插件提供了一个“json”结果类型来把action序列化成json.如果使用了json拦截器,action将可通过请求中的json内容组装出来,该拦截器需要遵循以下几条规则:
- "content-type" 必须为 "application/json"
- JSON 内容必须是格式良好的, 参考 json.org 中的语法.
- Action 里必须有欲获取值的属性的相应 public 的 "setter" 方法.
- 所支持的类型有: 原始类型 (int,long...String), Date, List, Map, 原始类型数组, 其他的类 (将会支持更多), 和其他类型的数组.
- JSON 中的任何将要被填入到 list 或 map 中的对象会是 Map 类型(属性映射到值), 任何整数都是 Long 类型, 任何小数会是 Double 类型, 任何数组会是 List 类型.
排除属性
逗号分隔的正则表达式列表可传递给 JSON Result 和 Interceptor(拦截器), 被任何 一个正则表达式匹配的属性将会在序列化过程时忽略掉:
<!-- Result fragment -->
<result type="json">
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</result>
<!-- Interceptor fragment -->
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
包含属性
逗号分隔的正则表达式列表可被传递给 JSON Result, 用于限制哪些属性可用于序列化. 只有当能够匹配任何一个正则表达式的属性才会包含在序列化输出中.
排除属性表达式优先于包含属性的表达式. 那就是说, 如果包含和排除表达式应用于同一个结果, 包含表达式对于被排除表达式匹配到的属性是不起作用的.
<result type="json">
<param name="includeProperties">
^entries\[\d+\]\.clientNumber,
^entries\[\d+\]\.scheduleNumber,
^entries\[\d+\]\.createUserId
</param>
</result>
根对象
使用 "root" 属性(OGNL 表达式) 指定被用于序列化的根对象.
<result type="json">
<param name="root">
person.job
</param>
</result>
举个例子
import java.util.HashMap;
import java.util.Map;
import com.opensymphony.xwork2.Action;
public class JSONExample {
private String field1 = "str";
private int[] ints = {10, 20};
private Map map = new HashMap();
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 execute() {
map.put("John", "Galt");
return Action.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 getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
@JSON(name="newName")
public String getCustomName() {
return this.customName;
}
}
struts的配置文件如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="example" extends="json-default">
<action name="JSONExample">
<result type="json"/>
</action>
</package>
</struts>
那么其构造出来的json结果为
{
"field1" : "str",
"ints": [10, 20],
"map": {
"John":"Galt"
},
"newName": "custom"
}
分享到:
相关推荐
spring3.0+,经典版本,完整架包,包含spring+json+gson+mysql,整理不易,请大家下载后好好使用,有什么欠缺,大家可以回复我。
Eclipse+Struts2+Spring+MyBatis+json+gson环境搭建
SSH整合示例(详情见我博客专栏)之前的博客我们总结了spring基础、spring分别整合struts2、hibernate、mybatis等,今天我们来同时整合下 struts、spring、hibernate,也就是所谓的 ssh 。 整合流程: 1 首先整合...
主要是到的技术有通过Spring整合mybatis和strust2实现部门员工的CRUD操作。 3.采用spring aop实现对数据的新增,更新简单的记录当时的操作人和操作时间,另外就是在部门删除时,使用spring事务管理,来控制事务。 4....
使用ajax来请求并且处理不同框架所返回的json数据,有两个项目在里面。分别是:struts2+mybatis+spring和springmvc+mybatis+spring。
1. Struts2.5 + Spring4.2.5 + Hibernate5.1.0 + Mybatis3.3.1 整合 a. 资源中包含所需的所有jar包 b. 资源直接是web项目,所需配置都已完成 c. 包含简单的Struts2拦截器,Spring切面的的示例,Mybatis查询示例等...
手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis 博客地址:http://blog.csdn.net/qq598535550/article/details/51703190 我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能;而且在大...
动态配置webservice访问数据库,使用cxf2.6+spring3+mybatis3+struts2,使用jedis作为缓存服务器,配置格式与传输格式为json,测试版,仅供参考学习,请勿用于商业用途.
这是餐厅后场管理系统的一部分,模拟餐厅下单到后场小票机打印出小票。使用的框架为Struts +Mybatis+Spring。这是通过JSON解析转换到MVC层的表现层的代码。
Maven框架项目该项目不再更新维护,请移步该项目基于maven3.0构建的,项目中融合了Struts1 , Struts2 , Spring , SpringMVC , Hibernate , Ibatis , MyBatis , Spring Data JPA , Spring JDBC , Spring DWR...
此视频包含:springmvc入门教程...springmvc和mybatis整合;springmvc注解开发;springmvc和struts2的区别;springmvc异常处理;springmvc上传图片;springmvc实现json交互;springmvc对RESTful支持;springmvc拦截器
《我的博客园》项目基于MVC设计开发模式,采用了(Struts2 + Spring + MyBatis )框架及 MySql数据库编写的一款能及时发表自己所思所想的博客即B/S端应用。 使用Struts2框架实现了业务请求的转发和重定向的跳转功能,...
struts2-spring-plugin-2.3.15.3.jar struts2-struts1-plugin-2.3.15.3.jar struts2-testng-plugin-2.3.15.3.jar struts2-tiles-plugin-2.3.15.3.jar struts2-tiles3-plugin-2.3.15.3.jar tagsoup-1.2.1.jar tiles-...
Java版水果管理系统源码 ...7、传统项目三层框架Struts1/2.x+Spring+Hibernate spring官网: 8、安全框架SpringSecurity/Shiro 跟我学shiro w3cschool: 9、新项目三层框架SpringMVC+Spring+MyBatis #####
lib/struts2-core-2.0.11.jar lib/poi-3.11-20141221.jar lib/poi-excelant-3.11-20141221.jar lib/poi-ooxml-3.11-20141221.jar lib/poi-ooxml-schemas-3.11-20141221.jar lib/poi-scratchpad-3.11-20141221....
4、SpringMVC整合MyBatis 5、参数绑定 a)SpringMVC默认支持的类型 b)简单数据类型 c)Pojo类型 d)Pojo包装类型 e)自定义参数绑定 6、SpringMVC和Struts2的区别 第二天 1、高级参数绑定 a)数组类型的参数绑定 b)List...
org.springframework.web.struts-3.1.1.RELEASE.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar spring-aop-3.1.1.RELEASE.jar spring-asm-3.1.1.RELEASE.jar spring-beans-3.1.1.RELEASE.jar spring-context-...
该项目基于maven3.0构建的,项目中融合了Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、Spring JDBC、Spring DWR。页面展现这里使用Struts1、Struts2、SpringMVC(jsp视图、...
│ struts2-spring-plugin-2.1.8.jar │ xwork-core-2.1.6.jar │ ├─struts │ commons-fileupload-1.2.1.jar │ freemarker-2.3.15.jar │ jstl.jar │ ognl-2.7.3.jar │ ojdbc6.jar │ standard.jar │ struts...
ehcache,hibernate-lib,json-lib,mybatis-lib,spring-lib,ssh-jar,struts2-lib