`

struts.xml配置json

阅读更多

为了方便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.xml的要准备的jar包

    在使用Struts框架时,`struts.xml`配置文件起着至关重要的作用,它是整个应用的配置中心,定义了动作映射、拦截器、结果类型等核心组件。为了正确运行Struts2框架,我们需要准备一系列的JAR文件,这些库文件提供了...

    Struts2手动搭建所有的jar包及相应的struts.xml和web.xml

    本教程将详细讲解如何手动搭建一个完整的Struts2环境,包括引入所有必要的jar包以及配置struts.xml和web.xml文件。 首先,我们需要准备Struts2的核心库。Struts2框架依赖于一系列的jar包,这些包包含了从控制器到...

    SSH action+struts.xml+jsp

    `struts.xml`是Struts2框架的配置文件,用于定义Action、结果类型、拦截器等,是整个应用的路由中心。 2. **Action**: 在Struts2中,Action是处理用户请求的业务逻辑组件。一个Action类通常对应一个特定的用户...

    net.sf.json 及相关jar包

    2. **XML与JSON互转**:除了基本的Java对象和JSON的转换,`net.sf.json`还支持XML到JSON以及JSON到XML的转换,使得不同格式的数据交换变得便捷。 3. **JSON格式处理**:库中提供了丰富的API来处理JSON,例如解析...

    阿里fastjson和谷歌net.sf.json(三种)

    - **API简单**:使用`JSON.parseObject()`和`JSON.toJSONString()`等方法可以快速完成JSON与Java对象的相互转换。 - **支持复杂类型**:Fastjson支持Java集合、自定义类型、泛型等复杂类型的转换。 - **JSONPath支持...

    Struts2.x配合JSON和JQuery使用的简单实例

    在`struts.xml`配置文件中,添加以下配置来启用JSON支持: ```xml &lt;constant name="struts.enable.SMD" value="true"/&gt; &lt;constant name="struts.action.extension" value="action,json"/&gt; ``` 接下来,创建一个...

    json_struts2.rar_JSON java_SSH json Struts2_java json_json_strut

    通过配置struts.xml,我们可以指定哪些Action应返回JSON响应,并定义要包含在JSON响应中的字段。 3. **jQuery的Ajax方法**:如`$.ajax()`、`$.getJSON()`等,用于发送JSON请求并处理返回的JSON数据。在前端,这些...

    net.sf.json.zip

    标题中的"net.sf.json.zip"是一个压缩包文件,其中包含了一系列与Java相关的JSON处理工具类。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务和应用程序之间的数据传输。...

    与struts2配套的JSON架包

    - 考虑到JSON注入的安全问题,可以使用`struts.json.includeProperties`配置项仅包含特定的属性。 - 如果需要处理复杂的JSON结构,可以利用`@Result`的`includeProperties`或`excludeProperties`参数来指定序列化...

    struts2-json-plugin-2.3.8.jar

    在实际开发中,为了使用这个插件,你需要将`struts2-json-plugin-2.3.8.jar`文件放入项目的类路径(classpath)下,然后在Struts2的配置文件(通常为struts.xml)中启用JSON插件。在Action类中,定义返回JSON数据的...

    Struts2.5操作JSON相关jar包

    配置Struts2的JSON插件,需要在`struts.xml`配置文件中添加以下内容: ```xml &lt;constant name="struts.enable.SMD" value="true" /&gt; &lt;constant name="struts.action.extension" value="json" /&gt; ...

    struts2.3.15.3+json+maven

    使用Struts2可以简化Web应用程序的开发,通过Action类和配置文件,开发者可以方便地定义业务逻辑和页面跳转规则。 Maven是一个项目管理工具,它管理项目的构建、依赖关系和文档生成。在本例中,Maven被用来构建和...

    struts2.3.20生成返回json 浏览器解析json

    可以使用JSON.parse()方法或者jQuery的$.getJSON()等方法来解析JSON响应。例如,如果你使用jQuery: ```html &lt;script src="https://code.jquery.com/jquery-3.6.0.min.js"&gt;&lt;/script&gt; $.getJSON("/myAction.json",...

    struts2中配置json

    总结来说,配置Struts2的JSON支持涉及添加依赖、配置XML文件、修改Action类,以及确保返回的数据可以被序列化为JSON。通过这样的配置,你的Web应用就能有效地处理JSON请求和响应,提升与前端交互的效率。

    struts2+json的使用

    2. 配置Struts2的JSON插件:在struts.xml配置文件中,添加JSON插件的配置,以启用JSON支持。 ```xml &lt;constant name="struts.enable.SMD" value="true"/&gt; &lt;constant name="struts.action.extension" value=",json"/...

    JSON.rar_JSON Hibernate_extjs_json struts ext_jsp json extjs_str

    在给定的标题"JSON.rar_JSON Hibernate_extjs_json struts ext_jsp json extjs_str"中,我们可以看出这是一个与JSON相关的项目,可能包含了使用JSON进行数据交换的各种技术集成。JSON在这里可能是作为前后端数据传输...

    struts2--json包

    5. **自定义JSON序列化和反序列化**:Struts2允许我们通过实现`org.apache.struts2.json.JSONWriter`接口来自定义JSON序列化过程,或者通过`org.apache.struts2.json.JSONProcessor`接口自定义反序列化过程。...

    struts2的json插件配置详解(附示例strutsJson)

    这里,`struts.enable.SMD`配置项允许使用SMD(Simple Method Dispatch),`struts.action.extension`添加了JSON作为Action的扩展名,`struts.json.excludeProperties`则用于排除某些敏感属性,防止它们被序列化为...

    完整的struts2框架应用实例.docx

    web.xml 文件主要是配置 Struts 的过滤器,使整个 Web 的流程转入到 Struts 框架中,而 struts.xml 是 Struts 框架的核心配置文件,在项目开发过程中,需要在此文件中进行大量的配置。 二、Struts2 框架所需要的两...

    struts2乱码与json插件(1)

    Struts2是一个流行的Java web框架,它为开发者提供了一种模型-视图-控制器(MVC)...通过理解和配置`TextFilter.java`过滤器以及`struts.xml`配置文件,开发者可以有效地解决字符编码问题并利用JSON插件优化数据传输。

Global site tag (gtag.js) - Google Analytics