关于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"
}
分享到:
相关推荐
标题中的"Struts2+Spring3.0+MyBatis3.0平台搭建"涉及到的是一个常见的企业级Java Web开发框架组合。这个平台基于Struts2作为MVC框架,Spring3.0作为核心容器,负责依赖注入(DI)和面向切面编程(AOP),而MyBatis...
Struts2、Spring3.1、MyBatis3.06和EasyUI是四个在Java Web开发中广泛应用的框架和技术。它们的整合旨在提供一个高效、灵活且易于维护的后端架构,同时利用EasyUI来增强前端用户体验。下面将详细阐述这四个组件的...
Struts2、Spring和MyBatis是Java Web开发中经典的三大框架,它们组合起来能够构建出高效、可维护性良好的企业级应用。本项目提供了一个基于这三个框架的简单搭建示例,下面将详细介绍这三个框架的核心功能及它们如何...
在本文中,我们将探讨如何在Eclipse环境中搭建一个基于Struts2、Spring、MyBatis的SSM框架,并结合JSON和Gson库进行开发。首先,我们需要准备相关的安装文件,包括Struts2、Spring、MyBatis、jQuery、Eclipse IDE...
这个系统的核心技术栈包括Struts1.2、Hibernate3.0、Spring2和DWR,这些都是Java开发中的关键框架和库。 Struts1.2是MVC(Model-View-Controller)设计模式的一个实现,是早期非常流行的Web应用框架。它提供了控制...
【标题】"物流项目struts+mybatis+spring"是一个基于流行Java技术栈构建的物流管理系统。这个系统利用了Struts、MyBatis和Spring框架的强大力量,旨在实现高效、稳定且易于维护的物流业务流程管理。 【描述】提到的...
SSM(Spring、Struts和MyBatis)是Java Web开发中常见的三层架构组合,它将Spring的依赖注入和管理、Struts的MVC模式以及MyBatis的持久层操作结合在一起,提供了一套高效、灵活的开发方案。在本压缩包中,你将找到...
在Java Web开发中,Spring、Hibernate、Struts2和MyBatis是四个非常重要的框架,它们各自负责不同的职责,但通常被组合在一起使用,形成所谓的"SSH"或"SSM"(Spring、Struts2、Hibernate)或者"SSHM"(Spring、...
SSM(Spring、Struts、MyBatis)是Java Web开发中常见的三层架构组合,用于构建高效、灵活的Web应用程序。这个压缩包包含了这三个框架所需的JAR文件,为开发者提供了一个快速搭建SSM整合环境的基础。 **Spring框架*...
Struts2、Spring2.5、JDBC、Ext和JSON是构建现代企业级Java应用程序的重要技术组件。在本文中,我们将深入探讨这些技术的核心概念、它们如何协同工作以及在实际项目中的应用。 **Struts2** 是一个基于MVC(模型-...
Spring、Struts2和MyBatis是Java Web开发中非常流行的三大开源框架,它们各司其职,共同构建了一个高效、灵活的企业级应用框架。在这个"Spring+Struts2+MyBatis完整框架"中,我们可以看到这三者是如何协同工作的。 ...
在Java开发领域,Spring、SpringMVC、MyBatis和Struts2是四个非常重要的框架,它们被广泛用于构建企业级应用。这个压缩包包含了这四个框架相关的83个jar文件,为开发者提供了一站式的解决方案,避免了逐一搜索和添加...
在IT行业中,构建Java应用程序时,常常会使用到"Maven+Spring+MyBatis+JUnit"这样的技术栈。这是一个高效且灵活的组合,能够帮助开发者快速地开发、测试和部署项目。下面将详细阐述这些技术及其在实际项目中的应用。...
标题中的"spring+struts2+mybatis jar包"指的是一个经典的Java企业级应用程序开发框架组合,通常称为SSM框架。这个框架集合了Spring、Struts2和MyBatis三个核心组件,它们各自负责不同的职责,协同工作以构建高效、...
SSH整合示例(详情见我博客专栏)之前的博客我们总结了spring基础、spring分别整合struts2、hibernate、mybatis等,今天我们来同时整合下 struts、spring、hibernate,也就是所谓的 ssh 。 整合流程: 1 首先整合...
在这个整合项目中,"SSH"通常指的是Spring、Struts和Hibernate的组合,而这里用的是Spring MVC代替Struts,因为Spring MVC在现代Web开发中更为流行,提供了更灵活的路由和更强大的功能。 整合步骤大致如下: 1. **...
在提供的压缩包中,"Struts2"可能包含了整合所需的Struts2和Spring的相关jar包,如struts2-core、spring-context、struts2-spring-plugin等。确保所有必需的jar包都在项目的类路径中,是整合成功的关键步骤之一。...
主要是到的技术有通过Spring整合mybatis和strust2实现部门员工的CRUD操作。 3.采用spring aop实现对数据的新增,更新简单的记录当时的操作人和操作时间,另外就是在部门删除时,使用spring事务管理,来控制事务。 4....
整合Struts2、Spring和MyBatis的过程主要包括以下几个步骤: 1. **引入依赖**:在项目中添加这三个框架的依赖库,通常通过Maven或Gradle进行管理。 2. **配置Struts2**:在struts2的核心配置文件`struts.xml`中...
5. **整合过程**:SSIS的整合涉及配置文件的调整,包括Spring的beans.xml、struts-config.xml(或struts2的配置文件)、mybatis的sqlMapConfig.xml等。通常,Spring会作为核心框架,管理其他两个框架的bean实例。...