为了方便ajax调用传输数据,在struts2中加入的json插件用来做对象的序列化和反序列化,
1. 下载json插件包,将jar包拷贝到WEB-INF/lib目录
注:struts2的json插件有两个版本0.32和0.34,我用的struts2的版本是2.0.11,在加入0.34版本json插件时启动发生异常,提示找不到相关方法,后来就换成了低版本的0.32一切OK,仔细查看文档后发现struts2的2.0.*版本的对应插件的0.32版本,struts2.1.*版本对应0.34版本
2.json插件执行原理时序图
点击查看原图
3.将struts.xml里面的
Xml代码
<package name="default" extends="struts-default">
改为
Xml代码
<package name="default" extends="json-default">
4.Action中的配置
Xml代码
<action name="testAction" class="com.json.action.TestAction" method="testMethod">
<interceptor-ref name="json" /><!--处理以JSON文本提交的请求-->
<result type="json" /> <!--将action的bean属性以json字符串返回浏览器-->
</action>
注:根据需要选择interceptor和result配置
5. 你会发现前台返回的json字符串,是把action中的所有属性全部转化为json字符串返回给浏览器了,但是我有时候需要根据实际情况返回部分结果,如何对json的结果进行定制输出呢?result提供了一些参数替你解决这个问题
5.1. root参数:从返回结果中根据ognl表达式取出你需要输出的结果
如:
action类
Java代码
public class BaseAction extends ActionSupport implements {
private Person person = null;
...
}
bean类
Java代码
public class Person {
private String name;
private int age;
...
}
我们只要输出person对象的name属性值,配置如下
Xml代码
<result type="json">
<param name="root">person.name</param>
</result>
5.2. excludeNullProperties 参数:表示是否去掉空值, 默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值。
Xml代码
<result type="json">
<param name="excludeNullProperties">true</param>
</result>
5.3. ignoreHierarchy 参数:表示是否忽略等级,也就是继承关系,比如:TestAction继承于BaseAction,那么TestAction中返回的json字符串默认是不会包含父类BaseAction的属性值,ignoreHierarchy值默认为true,设置为false后会将父类和子类的属性一起返回。
Xml代码
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
5.4. includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。
如:输出person的所有属性
Xml代码
<result type="json">
<param name="includeProperties">person.*, person\.name</param>
</result>
5.5. excludeProperties 参数:输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式,类同5.4.
为了方便ajax调用传输数据,在struts2中加入的json插件用来做对象的序列化和反序列化,
1. 下载json插件包,将jar包拷贝到WEB-INF/lib目录
注:struts2的json插件有两个版本0.32和0.34,我用的struts2的版本是2.0.11,在加入0.34版本json插件时启动发生异常,提示找不到相关方法,后来就换成了低版本的0.32一切OK,仔细查看文档后发现struts2的2.0.*版本的对应插件的0.32版本,struts2.1.*版本对应0.34版本
2.json插件执行原理时序图
点击查看原图
3.将struts.xml里面的
Xml代码
<package name="default" extends="struts-default">
改为
Xml代码
<package name="default" extends="json-default">
4.Action中的配置
Xml代码
<action name="testAction" class="com.json.action.TestAction" method="testMethod">
<interceptor-ref name="json" /><!--处理以JSON文本提交的请求-->
<result type="json" /> <!--将action的bean属性以json字符串返回浏览器-->
</action>
注:根据需要选择interceptor和result配置
5. 你会发现前台返回的json字符串,是把action中的所有属性全部转化为json字符串返回给浏览器了,但是我有时候需要根据实际情况返回部分结果,如何对json的结果进行定制输出呢?result提供了一些参数替你解决这个问题
5.1. root参数:从返回结果中根据ognl表达式取出你需要输出的结果
如:
action类
Java代码
public class BaseAction extends ActionSupport implements {
private Person person = null;
...
}
bean类
Java代码
public class Person {
private String name;
private int age;
...
}
我们只要输出person对象的name属性值,配置如下
Xml代码
<result type="json">
<param name="root">person.name</param>
</result>
5.2. excludeNullProperties 参数:表示是否去掉空值, 默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值。
Xml代码
<result type="json">
<param name="excludeNullProperties">true</param>
</result>
5.3. ignoreHierarchy 参数:表示是否忽略等级,也就是继承关系,比如:TestAction继承于BaseAction,那么TestAction中返回的json字符串默认是不会包含父类BaseAction的属性值,ignoreHierarchy值默认为true,设置为false后会将父类和子类的属性一起返回。
Xml代码
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
5.4. includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。
如:输出person的所有属性
Xml代码
<result type="json">
<param name="includeProperties">person.*, person\.name</param>
</result>
5.5. excludeProperties 参数:输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式,类同5.4.
相关推荐
在使用Struts框架时,`struts.xml`配置文件起着至关重要的作用,它是整个应用的配置中心,定义了动作映射、拦截器、结果类型等核心组件。为了正确运行Struts2框架,我们需要准备一系列的JAR文件,这些库文件提供了...
本教程将详细讲解如何手动搭建一个完整的Struts2环境,包括引入所有必要的jar包以及配置struts.xml和web.xml文件。 首先,我们需要准备Struts2的核心库。Struts2框架依赖于一系列的jar包,这些包包含了从控制器到...
`struts.xml`是Struts2框架的配置文件,用于定义Action、结果类型、拦截器等,是整个应用的路由中心。 2. **Action**: 在Struts2中,Action是处理用户请求的业务逻辑组件。一个Action类通常对应一个特定的用户...
2. **XML与JSON互转**:除了基本的Java对象和JSON的转换,`net.sf.json`还支持XML到JSON以及JSON到XML的转换,使得不同格式的数据交换变得便捷。 3. **JSON格式处理**:库中提供了丰富的API来处理JSON,例如解析...
- **API简单**:使用`JSON.parseObject()`和`JSON.toJSONString()`等方法可以快速完成JSON与Java对象的相互转换。 - **支持复杂类型**:Fastjson支持Java集合、自定义类型、泛型等复杂类型的转换。 - **JSONPath支持...
在`struts.xml`配置文件中,添加以下配置来启用JSON支持: ```xml <constant name="struts.enable.SMD" value="true"/> <constant name="struts.action.extension" value="action,json"/> ``` 接下来,创建一个...
通过配置struts.xml,我们可以指定哪些Action应返回JSON响应,并定义要包含在JSON响应中的字段。 3. **jQuery的Ajax方法**:如`$.ajax()`、`$.getJSON()`等,用于发送JSON请求并处理返回的JSON数据。在前端,这些...
标题中的"net.sf.json.zip"是一个压缩包文件,其中包含了一系列与Java相关的JSON处理工具类。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务和应用程序之间的数据传输。...
- 考虑到JSON注入的安全问题,可以使用`struts.json.includeProperties`配置项仅包含特定的属性。 - 如果需要处理复杂的JSON结构,可以利用`@Result`的`includeProperties`或`excludeProperties`参数来指定序列化...
在实际开发中,为了使用这个插件,你需要将`struts2-json-plugin-2.3.8.jar`文件放入项目的类路径(classpath)下,然后在Struts2的配置文件(通常为struts.xml)中启用JSON插件。在Action类中,定义返回JSON数据的...
配置Struts2的JSON插件,需要在`struts.xml`配置文件中添加以下内容: ```xml <constant name="struts.enable.SMD" value="true" /> <constant name="struts.action.extension" value="json" /> ...
使用Struts2可以简化Web应用程序的开发,通过Action类和配置文件,开发者可以方便地定义业务逻辑和页面跳转规则。 Maven是一个项目管理工具,它管理项目的构建、依赖关系和文档生成。在本例中,Maven被用来构建和...
可以使用JSON.parse()方法或者jQuery的$.getJSON()等方法来解析JSON响应。例如,如果你使用jQuery: ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> $.getJSON("/myAction.json",...
总结来说,配置Struts2的JSON支持涉及添加依赖、配置XML文件、修改Action类,以及确保返回的数据可以被序列化为JSON。通过这样的配置,你的Web应用就能有效地处理JSON请求和响应,提升与前端交互的效率。
2. 配置Struts2的JSON插件:在struts.xml配置文件中,添加JSON插件的配置,以启用JSON支持。 ```xml <constant name="struts.enable.SMD" value="true"/> <constant name="struts.action.extension" value=",json"/...
在给定的标题"JSON.rar_JSON Hibernate_extjs_json struts ext_jsp json extjs_str"中,我们可以看出这是一个与JSON相关的项目,可能包含了使用JSON进行数据交换的各种技术集成。JSON在这里可能是作为前后端数据传输...
5. **自定义JSON序列化和反序列化**:Struts2允许我们通过实现`org.apache.struts2.json.JSONWriter`接口来自定义JSON序列化过程,或者通过`org.apache.struts2.json.JSONProcessor`接口自定义反序列化过程。...
这里,`struts.enable.SMD`配置项允许使用SMD(Simple Method Dispatch),`struts.action.extension`添加了JSON作为Action的扩展名,`struts.json.excludeProperties`则用于排除某些敏感属性,防止它们被序列化为...
web.xml 文件主要是配置 Struts 的过滤器,使整个 Web 的流程转入到 Struts 框架中,而 struts.xml 是 Struts 框架的核心配置文件,在项目开发过程中,需要在此文件中进行大量的配置。 二、Struts2 框架所需要的两...
Struts2是一个流行的Java web框架,它为开发者提供了一种模型-视图-控制器(MVC)...通过理解和配置`TextFilter.java`过滤器以及`struts.xml`配置文件,开发者可以有效地解决字符编码问题并利用JSON插件优化数据传输。