- 浏览: 1586958 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
- action 中:
- private List<Admins> entities;
- private Admins admin;
- public Admins getAdmin() {
- return admin;
- }
- public List<Admins> getEntities() {
- return entities;
- }
- public String execute (){
- AdminsService asi = new AdminsServiceImpl();
- entities = asi.getObjects(Admins.class);
- admin = (Admins) asi.findObjectById(Admins.class, 1);
- }
- 配置文件中的内容为
- 形式1:
- <result type="json" >
- <param name = "root" ></param>
- </result>
- 测试的结果为:
- {"admin" :
- {"address" : null , "cellPhone" : null , "email" : null , "id" :1, "password" : "ssssssss1" , "realName" : "sss1" , "role" : null , "sex" : null , "userName" : "redarmy1" },
- "entities" :
- [{"address" : null , "cellPhone" : null , "email" : null , "id" :1, "password" : "ssssssss1" , "realName" : "sss1" , "role" : null , "sex" : null , "userName" : "redarmy1" },
- {"address" : null , "cellPhone" : null , "email" : null , "id" :2, "password" : "ssssssss2" , "realName" : "sss2" , "role" : null , "sex" : null , "userName" : "redarmy2" }, { "address" : null , "cellPhone" : null , "email" : null , "id" :6, "password" : "ssssssss6" , "realName" : "sss6" , "role" : null , "sex" : null , "userName" : "redarmy6" },
- {"address" : null , "cellPhone" : null , "email" : null , "id" :7, "password" : "ssssssss7" , "realName" : "sss7" , "role" : null , "sex" : null , "userName" : "redarmy7" },
- {"address" : null , "cellPhone" : null , "email" : null , "id" :8, "password" : "ssssssss8" , "realName" : "sss8" , "role" : null , "sex" : null , "userName" : "redarmy8" },
- {"address" : null , "cellPhone" : null , "email" : null , "id" :9, "password" : "ssssssss9" , "realName" : "sss9" , "role" : null , "sex" : null , "userName" : "redarmy9" },
- {"address" : null , "cellPhone" : null , "email" : null , "id" :3, "password" : "ssssssss3" , "realName" : "sss3" , "role" : null , "sex" : null , "userName" : "redarmy3" },
- {"address" : null , "cellPhone" : null , "email" : null , "id" :4, "password" : "ssssssss4" , "realName" : "sss4" , "role" : null , "sex" : null , "userName" : "redarmy4" },
- {"address" : null , "cellPhone" : null , "email" : null , "id" :5, "password" : "ssssssss5" , "realName" : "sss5" , "role" : null , "sex" : null , "userName" : "redarmy5" }]}
- 因为前面返回的是一个admins对象还有一个集合对象,而且又没有设置要按哪个根节点元素去遍历。所以会把所有的信息都显示出来,返回的不是真正的json数据
- 形式2:
- 以entities为根去遍历,所有返回的是真正的json数据,会显示出自动提示效果
- <result type="json" >
- <param name = "root" >entities</param>
- </result>
- 形式3:
- <result type="json" >
- <param name = "root" >entities,admin</param>
- </result>
- 响应为
- {"address" : null , "cellPhone" : null , "email" : null , "id" :1, "password" : "ssssssss1" , "realName" : "sss1" , "role" : null , "sex" : null , "userName" : "redarmy1" }
- 因为设置了两个根节点,所有第一个根节点会被第二个根节点顶替,会按照第二个参数去设置,但返回的不是真正的json数据,所有不会出现自动提示功能
- 形式4:
- <result type="json" >
- <param name = "includeProperties" >entities</param>
- </result>
- 响应为:
- {"entities" :[]}
- includeProperties会包含参数作为属性,所以查不到内容
- 形式5:
- 过滤前List数据实际上是这种格式:entities[0].realName entities[1].realName等等,下面的正则表达式正是过滤这种格式的数据。
- <result type="json" >
- <param name = "includeProperties" >entities\[\d+\]\.realName</param>
- </result>
- 响应为:
- {"entities" :[{ "realName" : "sss1" },{ "realName" : "sss2" },{ "realName" : "sss6" },{ "realName" : "sss7" },{ "realName" : "sss8" },
- {"realName" : "sss9" },{ "realName" : "sss3" },{ "realName" : "sss4" },{ "realName" : "sss5" }]}
- includeProperties是包含参数作为作为属性,entities\[\d+\]\.realName是以entities作为根节点去遍历下面的realName,返回的不是真正的json数据
- 形式6:
- <result type="json" >
- <param name = "includeProperties" >^entities\[\d+\]\.realName</param>
- </result>
- 响应为:
- {"entities" :[{ "realName" : "sss1" },{ "realName" : "sss2" },{ "realName" : "sss6" },{ "realName" : "sss7" },{ "realName" : "sss8" },
- {"realName" : "sss9" },{ "realName" : "sss3" },{ "realName" : "sss4" },{ "realName" : "sss5" }]}
- ^:匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
-
原因同上,不过由于list集合的根节点本来就是entities,所有全部匹配
JSON(Java Script Object Notation),是一种语言无关的数据交换格式。
JSON插件是Structs 2 的Ajax插件,通过利用JSON插件,开发者可以很方便,灵活的利用Ajax进行开发。
Json是一种轻量级的数据交换格式,JSon插件提供了一种名为json的Action ResultType 。
一旦为Action指定了该结果处理类型,JSON插件就会自动将Action里的数据序列化成JSON格式的数据,
并返回给客户端物理视图的JavaScript。简单的说,JSON插件允许我们在JavaScript中异步的调用Action,
而且Action不需要指定视图来显示Action的信息显示。
而是由JSON插件来负责具体将Action里面具体的信息返回给调用页面。
Json的数据格式可简单如下形式: person = { name: 'Jim',age: 18,gender: 'man'}。
如果action的属性很多,我们想要从Action返回到调用页面的数据。
这个时候配置includeProperties或者excludeProperties拦截器即可。
而这2个拦截器的定义都在struts2的json-default包内,所以要使用该拦截器的包都要继承自json-default。
<struts>
<constant name="struts.objectFactory" value="spring"/>
<include file="struts-admin.xml"></include>
<package name="default" extends="json-default">
<action name="person" class="com.person.PersonAction" method="view">
<result type="json">
<param name="includeProperties">
person/.name,persoon/.age,person/.gender
</param>
</result>
</action>
</package>
</struts>
利用Struts 2的支持的可配置结果,可以达到过滤器的效果。Action的处理结果配置支持正则表达式。
但是如果返回的对象是一个数组格式的Json数据。比如peson Bean中有对象persion1...person9,而我只要person1的json数据,
则可以用如下的正则表达式。
<struts>
<constant name="struts.objectFactory" value="spring"/>
<include file="struts-admin.xml"></include>
<package name="default" extends="json-default">
<action name="person" class="com.person.PersonAction" method="view">
<result type="json">
<param name="includeProperties">
person/[/d+/]/.person1
</param>>
</result>
</action>
</package>
</struts>
excludeProperties拦截器的用法与此类同,如果拦截的仅仅是一个对象,如果拦截掉person Bean的整个对象。
<struts>
<constant name="struts.objectFactory" value="spring"/>
<include file="struts-admin.xml"></include>
<package name="default" extends="json-default">
<action name="person" class="com.person.PersonAction" method="view">
<result type="json">
<param name="excludeProperties">
person
</param>>
</result>
</action>
</package>
</struts>
需要注意的是,如果用JSON插件把返回结果定为JSON。而JSON的原理是在ACTION中的get方法都会序列化,
所以前面是get的方法只要没指定不序列化,都会执行。
如果该方法一定要命名为get*(比如实现了什么接口),
那么可以在该方法的前面加注解声明该方法不做序列化。
注解的方式为:@JSON(serialize=false)
除此之外,JSON注释还支持如下几个域:
serialize:设置是否序列化该属性
deserialize:设置是否反序列化该属性。
format:设置用于格式化输出、解析日期表单域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。
//使用注释语法来改变该属性序列化后的属性名
@JSON(name="newName")
public String getName()
{
return this.name;
}
需要引入 import com.googlecode.jsonplugin.annotations.JSON;
或者org.apache.struts2.json.annotations.JSON;
@JSON(serialize=false)
public User getUser() {
return this.User;
}
@JSON(format="yyyy-MM-dd")
public Date getStartDate() {
return this.startDate;
}
SONArray:是用于将Java中Array以及Collection转换成Json形式的字符串;
JSONObject:是将Java中的普通对象以及Map转换成Json形式的字符串;
JsonConfig:当我们将Java中的对象要转换成Json的时候,需要防止形成环状(比如在一对一等映射关系中),如果你是使用
Hibernate的时候,对于代理对象也是不能转化的,还有就是对于日期的转换也是经常会出错的(如果一定要使用日期,建议使用dwr传输数据)。以上
三种情景是在使用Json的时候最容易出错的,幸好JsonConfig帮了我们大忙。使用JsonConfig可以将一个类中包含以上三种类型的属性在
将对象转换成Json的时候过滤掉(当然是在客户端不需要那些属性的情况下),同时这样也能减少网络通信的数据量,提升性能。
result 类型 为json
有param下如:
ignoreHierarchy参数:表示是否忽略等级,也就是继承关系,比如:TestAction继承于BaseAction,那么TestAction中返回的json字符串默认是不会包含父类BaseAction的属性值,
ignoreHierarchy值默认为true,设置为false后会将父类和子类的属性一起返回。
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
- Struts2___JQuery___JSON实现AJAX.rar (10.3 KB)
- 下载次数: 6
- Struts2返回JSON对象.rar (28.9 KB)
- 下载次数: 5
发表评论
-
Struts2与Velocity整合
2014-02-19 17:13 2332转自:http://yjhexy.iteye.com/ ... -
Velocity简介和Velocity与Jsp、Freemarker的对比(java常用的三种表现层技术)
2014-02-19 17:09 1442Velocity 是一个基于java ... -
学习Struts2 jQuery Plugin 3.0(转)(此外还有struts-jquery-grid-tags, showcase等)
2014-01-14 20:04 1366from:http://blog.csdn.net/ld_f ... -
KindEditor上传图片问题
2013-03-19 15:24 3404转自:http://www.cnblogs.com/jav ... -
使用SVN检出Struts Spring Hibernate源码
2013-02-05 16:50 1356Spring Spring源码是由springframewo ... -
Servlet与Struts action线程安全问题分析
2012-08-23 10:22 1177Servlet/JSP技术和ASP、PHP等相比,由于其多线程 ... -
Struts2上传文件过大的反馈处理
2012-08-23 09:42 2381问题描述:前段时间在struts2下做文件上传,当上传大文件时 ... -
Struts2的addActionError() 与addFieldError ()
2012-08-23 09:41 1090addActionError() 与addFieldError ... -
struts2中<s:property value="xx"/>的工作原理
2012-08-20 10:18 1711使用struts2标签的jsp页面中<s:propert ... -
struts2的线程安全(好好看看)(在理解不扎实与测试下自己砸了理解的真理)
2012-08-08 15:57 2946转自:http://japi.iteye.com/blog/4 ... -
struts2下利用json进行文件上传和下载遇到的一些问题(暂时未明白)
2012-07-16 16:52 1319上传文件时:利用jquery的ajaxfileupload异步 ... -
struts2文件下载(使用struts2配置方式和单纯response方式)
2012-07-16 16:43 1864若是使用类似Servlet方式下载,可以通过ServletAc ... -
struts2文件上传(单个文件和多个文件)
2012-07-16 16:38 19631. 文件上传的原理: 表单元素的encty ... -
探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析 (转)
2012-07-13 15:22 1204作者:niumd blog:http://ari.i ... -
Struts2的StrutsPrepareAndExecutefilter与FilterDispatcher
2012-07-13 15:18 980FilterDispatcher是早期struts2的过滤器, ... -
OGNL遍历list和map以及访问四个范围的属性值
2012-07-11 17:23 2344转自:http://blog.csdn.net/a9529 ... -
struts2的result为chain的跳转问题(参数设置)
2012-07-09 14:59 2628本文章非原创,本文章抄录于http://blog.sina.c ... -
struts2拦截器(转)
2012-07-01 13:52 1206转自:http://www.blogjava.ne ... -
struts2工作原理(转)
2012-07-01 13:45 1268读者如果曾经学习 过S ... -
Struts2返回JSON数据的具体应用范例(转)
2012-06-29 09:20 1403早在我刚学Struts2之初 ...
相关推荐
在Struts2中集成JSON,可以方便地将服务器端处理的结果以JSON格式传递给前端,简化数据传输并提高应用性能。 一、Struts2与JSON集成的必要性 在传统的Web开发中,服务器通常返回HTML页面来更新客户端视图。然而,...
### 注意事项 - 对于复杂类型的对象,Struts2默认可能无法正确序列化。你可能需要自定义序列化器或者使用Gson、Jackson等库进行转换。 - 如果需要排除某些属性不被序列化,可以在Action类上使用`@SkipSerialization`...
在使用Struts2框架开发Web应用时,JSON(JavaScript Object Notation)作为一种轻量级的数据...理解并掌握这些注意事项,可以帮助开发者更有效地在Struts2框架中利用JSON进行数据交换,提高应用程序的效率和安全性。
Struts2 JSON Plugin是Apache Struts框架的一个重要插件,主要功能是使Struts2能够无缝地处理JSON(JavaScript Object Notation)数据。这个插件极大地增强了Struts2应用程序的可交互性和响应速度,尤其在开发Web...
6. **安全注意事项**:使用Struts2 JSON时,要注意防止XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等安全问题。确保在返回JSON数据时不暴露敏感信息,并正确配置过滤器以避免恶意请求。 7. **自定义JSON输出**:...
在本场景中,我们将重点讨论如何利用Struts2作为后台处理框架,与前端Ajax通过JSON(JavaScript Object Notation)数据格式进行数据交换。 **Struts2框架** Struts2是一个基于MVC(Model-View-Controller)设计模式...
6. **安全注意事项**: 当使用Struts2的JSON插件时,必须注意XSS和CSRF攻击。例如,确保只返回预期的数据,而不是整个HTTP响应,这可以通过配置`param.exclude`来实现。 7. **JSON结果类型配置**: 可以通过`<param>`...
7. **安全注意事项**:使用Struts2 JSON时,需注意防止XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等安全问题。Struts2提供了相关的拦截器和过滤器来增强安全性。 综上所述,"struts2 json例子 可执行"意味着提供了...
6. **注意事项**: - 安全性:使用AJAX和局部刷新时,应考虑XSS攻击,确保返回的数据已进行了适当的转义和过滤。 - 缓存:可能需要禁用AJAX请求的缓存,以防止显示过期数据。 - 错误处理:添加错误处理代码,处理...
本文通过对Struts2项目中JSON与Struts2结合的具体案例进行了详细的分析和解释,不仅介绍了JSON的基础知识和Struts2框架的特点,还重点阐述了如何在Struts2项目中集成使用JSON,包括具体的代码实现细节以及注意事项。...
8. **使用注意事项**: 使用Struts2的全部JAR包时,要注意避免版本不兼容问题,确保所有库的版本一致。同时,正确配置web.xml文件,指定Struts2的过滤器。 9. **最佳实践**: - 为了代码整洁,推荐使用注解配置而...
注意事项** - 确保服务器端返回的JSON数据格式正确,避免出现语法错误。 - 考虑到跨域问题,可能需要在服务器端开启CORS或者使用JSONP。 - 在处理JSON数据时,注意数据安全,避免XSS攻击。 以上就是使用jQuery...
在Java环境中,解析和生成JSON通常需要依赖于特定的库,比如Apache Struts2框架在处理JSON响应时就可能会用到相关的jar包。 Struts2是一个非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java web...
[Android访问Struts2服务器程序]我发现在网上下载这个源码很困难,我一步步配置成功了,还将具体应该注意的事项都列出来了,很详细,能够运行成功! Android+struts2+JSON形式的手机开发 把本机当作服务器,将Android...
- **配置文件**:在Struts2配置文件中指定扩展名为`json-default`的包,以启用JSON处理功能。 - **Action返回类型**:设置Action的结果类型为`json`,Struts2会自动将模型对象转化为JSON字符串。 **案例——商品...
5. **注意事项**:确保在项目中引入了Struts2 JSON插件的相关依赖,并在web.xml中配置了Struts2的核心过滤器。 总结起来,结合Ajax和JSON在Struts2.0中的应用,可以提高Web应用的交互性和响应速度。通过在后台...
SWFUpload 是一款开源的Flash上传组件,...通过上述步骤和注意事项,你可以利用SWFUpload和Struts2构建一个功能强大且安全的多文件上传功能。在实际项目中,根据需求进行适当的定制和优化,以满足用户需求和系统安全。
- **文件下载**:介绍实现文件下载功能的步骤和注意事项。 #### 十一、视图浅析 - **视图技术**:讨论Struts2与其他视图技术(如JSP、Freemarker)的集成方式。 #### 十二、集成AJAX - **JSON概述**:介绍JSON格式...