从源代码角度看Struts2返回JSON数据的原理

从源代码角度看Struts2返回JSON数据的原理

ID:36295957

大小:112.50 KB

页数:12页

时间:2019-05-08

从源代码角度看Struts2返回JSON数据的原理_第1页
从源代码角度看Struts2返回JSON数据的原理_第2页
从源代码角度看Struts2返回JSON数据的原理_第3页
从源代码角度看Struts2返回JSON数据的原理_第4页
从源代码角度看Struts2返回JSON数据的原理_第5页
资源描述:

《从源代码角度看Struts2返回JSON数据的原理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、从源代码角度看Struts2返回JSON数据的原理日期:2012-01-03来源:杨胜寒分享至:前面一篇文章其实只是介绍了如何在Struts2中返回JSON数据到客户端的具体范例而无关其原理,内容与标题不符惹来标题党嫌疑确实是笔者发文不够严谨,目前已修改标题,与内容匹配。本文将从struts2-json插件的源码角度出发,结合之前的应用范例来说明struts2-json插件返回JSON数据的原理。用winrar打开struts2-json-plugin-xx.jar(笔者使用版本为2.1.8.1),根目录下有一个struts-plu

2、gin.xml,这个文件想必大家都很了解,不做过多介绍了。打开该文件,内容非常简答,如下:

3、前文提到,如果要使用Struts2返回JSON数据到客户端,那么action所在的package必须继承自

4、json-default包,原因就在上边的配置文件中:这里的配置文件指定了该插件的包名为json-default,所以要使用该插件的功能,就必须继承自该包——json-default。上面的配置文件中,配置了两个类:org.apache.struts2.json.JSONResult和org.apache.struts2.json.JSONInterceptor,前者是结果类型,后者是一个拦截器。简单说一下,org.apache.struts2.json.JSONResult负责将action中的“某些”(通过相关参数可以指定,前文

5、已有详述)或action中所有"可获取"(有getter方法的属性或一个有返回值的getter方法的返回值)数据序列化成JSON字符串,然后发送给客户端;org.apache.struts2.json.JSONInterceptor负责拦截客户端到json-default包下的所有请求,并检查客户端提交的数据是否是JSON类型,如果是则根据指定配置来反序列化JSON数据到action中的bean中(说的有点简单,其实该拦截器内部对数据做了很多判断),拦截器不是本文的重点,介绍到此为止。看一张图,或许能够更加清晰明了的说明JSON插件

6、执行的流程:下面重点说说org.apache.struts2.json.JSONResult。首先看一下org.apache.struts2.json.JSONResult源码的核心部分:部分属性privateStringdefaultEncoding="ISO-8859-1";//默认的编码privateListincludeProperties;//被包含的属性的正则表达式,这些属性的值将被序列化为JSON字符串,传送到客户端privateListexcludeProperties;//被排除

7、的属性的正则表达式,这些属性的值在对象序列化时将被忽略privateStringroot;//根对象,即要被序列化的对象,如不指定,将序列化action中所有可被序列化的数据privatebooleanwrapWithComments;//是否包装成注释privatebooleanprefix;//前缀privatebooleanenableGZIP=false;//是否压缩privatebooleanignoreHierarchy=true;//是否忽略层次关系,即是否序列化对象父类中的属性privatebooleanignore

8、Interfaces=true;//是否忽略接口privatebooleanenumAsBean=false;//是否将枚举类型作为一个bean处理privatebooleanexcludeNullProperties=false;/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。