- 浏览: 1071476 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
1、引入包(本文中的包全部引自struts-2.1.8.1\lib):
这7个包是返回json形式的数据必须的。因为json大量引用了Apache commons的包,所以要加入4个,commons包,除了commons的包外,还需要引入一个 ezmorph的包。最后加入struts2必须的6个包:
2、后台:
public class UserInfo implements Serializable { private int userId; private String userName; private String password; get set方法略 } |
public class TestAction extends ActionSupport { private String message; //使用json返回单个值 private UserInfo userInfo; //使用json返回对象 private List userInfosList; //使用josn返回List对象 get set方法略 /*返回单个值*/ public String returnMsg(){ this.message = "成功返回单个值"; return SUCCESS; } /*返回UserInfo对象*/ public String returnUser(){ userInfo = new UserInfo(); userInfo.setUserId(10000); userInfo.setUserName("刘栋"); userInfo.setPassword("123456"); return SUCCESS; } /*返回List对象*/ public String returnList(){ userInfosList = new ArrayList<UserInfo>(); UserInfo u1 = new UserInfo(); u1.setUserId(10000); u1.setUserName("张三"); u1.setPassword("111111"); UserInfo u2 = new UserInfo(); u2.setUserId(10001); u2.setUserName("李四"); u2.setPassword("222222"); userInfosList.add(u1); userInfosList.add(u2); return SUCCESS; } } |
<package name="default" namespace="/json" extends="json-default"> <action name="returnMsg" class="com.testAction " method="returnMsg"> <result name="success" type="json"> <param name="root">validate</param> </result> </action> <action name="returnUser " class="com.testAction " method="returnUser "> <result name="success" type="json"> <param name="includeProperties"> userInfo\.userId,userInfo\.userName,userInfo\.password </param> </result> </action> <action name="returnList" class="com.testAction " method="returnList"> <result name="success" type="json"> <param name="includeProperties"> userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password </param> </result> </action> </package> |
3、前台:
<script language="javascript"> function getMsg(){ $.ajax({ url:'json/returnMsg.action', type:'post', dataType:'json', success:function(data){ $("#result").html(data.message); } }); } function getUser(){ $("# result ").html(""); $.ajax({ url:'json/returnUser.action', type:'post', dataType:'json', success:function(data){ $("#result").append("用户ID:"+data.userInfo.userId+"") .append("用户名:"+data.userInfo.userName+"") .append("密码:"+data.userInfo.password+""); } }); } function getUserList(){ $("# result ").html(""); $.ajax({ url:'json/returnList.action', type:'post', dataType:'json', success:function(data){ $.each(data.userInfosList,function(i,value){ $("#result").append("第"+(i+1)+"个用户") .append("用户名:"+value.userName+"") .append("密码:"+value.password+""); } } }); } </script> <div id="result"></div> <input type="button" value="获得单个消息" onclick="getMsg()"/> <input type="button" value="获得用户信息" onclick="getUser()"/> <input type="button" value="获得用户列表" onclick="getUserList()"/> |
4、只要继承extends="json-default",result type设置成json之后,容器会把action的属性自动封装到一个json对象中(json拦截器来做),然后调用ajax的callback方法. 返回json数据
5、includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。
如:输出UserInfo的所有属性及UserInfo的userName属性
<result type="json"> <param name="includeProperties"> userInfo.*, userInfo \. userName </param> </result> |
6、excludeProperties 参数:输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式,类同includeProperties
7、输出一个JSON List列表
<result name="success" type="json"> <param name="includeProperties"> userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password </param> </result> |
其中userInfosList是action中的一个List类型的属性,userInfosList \[\d+\]\. userName表示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)。
8、为什么要用includeProperties或excludeProperties 参数:主要是为了过滤掉接口,pojo的set、list、其它对象等不需要的数据防止循环取其它关联对象或找不到接口。如果不配置,默认是处理 action中的所有属性,如果action中有接口注入,json拦截器可能找不到接口而返回不了结果,还有如果action中有一个对象,这个对象与好多对象都有关联,json拦截器会将相关联的所有对象的属性全部转换成json格式,如果其它对象有list、set,其返回结果相当庞大,有可能是死循环而无法返回 。如果不用<param name="includeProperties">或其他方式进行json数据过滤,通过debug你会发现前台返回的json字符串,是把 action中的所有属性全部转化成json字符串返回给客户端(包括service接口、pojo所有属性及有关联的pojo。有时候根本返回不了结果,也不报错,后台执行了,但前台执行不到callback function,这主要是因为找不到接口或者关联的pojo太多,造成死循环),一般情况下用的最多的就是root、 includeProperties 和excludeNullProperties参数。当然还有其他的方法,如给pojo的属性加json注解。
9、总结: action中避免使用get开头的action方法,去掉action中的接口的get方法 为json类型的result配置includeProperties, excludeProperties等参数.
- Struts2JSON.rar (4.7 MB)
- 下载次数: 17
发表评论
-
struts2 之命名空间
2014-11-21 10:15 845把namespace单独拉出来讲一方面是因为它实际上不是一个 ... -
struts2 annotation 验证采用自定义的跳转
2014-11-19 11:22 980对于methodName 和resultName ... -
Struts2 annotation方法验证
2014-11-18 11:58 840struts2的验证分为分编程式验证、声明式验证、注解式验证 ... -
struts2 设置全局404页面
2014-11-04 10:38 1058目前在做一个网络应用程序,struts2 + spring ... -
struts2 整合json 出现no default param json type问题解决
2014-11-04 09:35 625服务器配置json后 我开始配置采用的是、<resu ... -
struts2 默认命名空间默认提示问题
2014-11-03 17:13 702不知道大家有没有遇到在使用表单的时候,有时候会出一个莫名其妙 ... -
struts2 配置下载文件解决中文文件名的问题
2012-04-05 17:01 1611我们的项目名为 struts2hello ,所使用的开发环境 ... -
struts2 下载文件报错的问题
2012-04-05 17:00 12242010-1-22 9:45:03 org.apache.st ... -
struts2 文件下载配置
2011-11-08 09:55 1668有些应用我们要下载文件,而不是直接在浏览器中打开,我们在STU ... -
使用struts2加ztree加jquery生成树形结构
2011-06-11 23:22 7156首先下载ztree,然后引入 ... -
解决response.sendRedirect(url); 的URL中包含中文的问题
2010-09-10 08:54 3328今天在项目中,发现在response.sendRedirect ... -
请求转发和请求重定向
2010-09-08 10:00 1920请求转发请求转发允许把请求转发给同一应用程序中的其他Web组件 ... -
struts2中提交的中文乱码解决办法
2010-09-08 09:22 2190jsp文件中使用struts2 <s:form>表 ... -
struts2中select的用法
2010-09-07 17:27 1045<s:select name="disabl ... -
对于struts2中textfiled标签每次自己添加了tr,td等代码的处理
2010-09-07 16:47 1948初学struts2,在头脑中一直在想一个问题,就是对于stru ... -
如何给struts2的redirect的result传递多个参数
2010-09-06 16:24 3198如何给struts2的redirect的result传递多个参 ... -
struts2.0学习笔记九(struts2.0中的拦截器的使用)
2009-03-27 15:26 1163struts2.0中基本拦截器的配置采用的是可插拔的方式 1. ... -
struts2.0学习笔记八(struts2.0中的验证方式)
2009-03-15 10:13 1133在struts2.0中也是通过采用validate方法来验证客 ... -
struts2.0学习笔记七(struts2.0action中植的传递)
2009-03-13 15:40 1361当我们在程序中,从一个ACTION到另一个ACTION的跳转, ... -
struts2.0学习笔记六(struts2.0通过ognl实现一个表单多个对象保存)
2009-03-13 10:27 2623以前,我们如果在一个FORM中要实现在这个FORM中对多个对象 ...
相关推荐
本文将详细介绍如何使用Struts2.1.8.1与jQuery1.4.2来返回JSON数据,包括必要的依赖包引入、后端逻辑编写以及配置文件设置等方面。 #### 一、引入必要依赖包 为了使Struts2能够支持JSON数据格式,我们需要引入一...
linuxdeploy-1.4.2 (Android 2.1.x+).apk.wim
再或者通过`AJAX`方法进行异步数据请求,结合`json`格式的数据进行页面动态更新。 在学习笔记中,我们可以记录下这些实践经验,总结每个方法的用法和适用场景,对比不同版本间的差异,以及在实际项目中遇到的问题及...
jquery-1.4.2.js jquery-1.4.2.min.js jquery-1.4.2-vsdoc.js 中文版vsdoc jquery-1.4.2-vsdoc_en.js jquery.cookie.js
JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例(已上传) 1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、...
5. **Ajax**:简化异步数据获取,如`$.ajax()`、`$.get()`和`$.post()`,方便进行JSON、XML或其他格式的数据交互。 接下来,我们转向jQuery1.4.1.chm文档。这是一个帮助文件,通常包含了jQuery库的所有函数、方法、...
在压缩包中,`jquery-1.4.2+vsdoc`可能是`jquery-1.4.2.js`与`jquery-1.4.2-vsdoc.js`两个文件的合并,方便开发者在不离开Visual Studio的环境下直接使用jQuery 1.4.2并享受到智能提示的支持。 总的来说,这个...
里面包含 Jquery 1.4.2 的 jquery.cookie+ jquery-1.4.2+ jquery-1.4.2.min+ jquery-1.4.2-vsdoc+ jquery-1.4.2-vsdoc_en + jQuery1.4.2_API帮助文档简体中文版
《jQuery 1.4.2:深入理解与应用》 jQuery是JavaScript库中的翘楚,以其简洁的API和强大的功能赢得了开发者们的广泛喜爱。这里我们主要关注的是jQuery 1.4.2版本,包括核心库文件`jquery-1.4.2.js`以及辅助开发的`...
《jQuery 1.4.2:深入理解与应用》 jQuery是JavaScript库的杰出代表,以其简洁、易用的API闻名于世。本篇将详细探讨jQuery 1.4.2这一经典版本,以及其对应的压缩文件jquery.min-1.4.2.js。 一、jQuery的核心理念 ...
"respond.min.js 1.4.2" 是一个JavaScript库,主要用于处理响应式设计,尤其在与Bootstrap框架配合使用时。这个库的核心功能是为不支持媒体查询(Media Queries)的旧版Internet Explorer浏览器提供支持,确保在这些...
这个压缩包包含了不同版本的jQuery库,包括`jquery-1.10.2.min.js`, `jquery-1.4.4.min.js`, `jquery-1.4.2.min.js`以及`jquery.min.js`。这些文件都是经过压缩和优化的版本,用于在网页中提高性能,减少加载时间。 ...
《jQuery 1.4.2:核心库与...无论是在创建动态网页、实现复杂交互,还是进行数据持久化,jQuery 1.4.2都能提供高效、简洁的解决方案。尽管现在有更新的jQuery版本,但1.4.2仍因其稳定性和广泛的应用而值得深入研究。
标题中的"jquery.min.js"、"jquery-1.4.2.min.js"、"jquery-1.4.4.min.js"以及"jquery-1.10.2.min.js"都是不同版本的jQuery库,其中".min"表示这些文件是经过压缩和优化的版本,适合在生产环境中使用,以减少页面...
附件里里面有 jquery-1.4.2.js jquery-1.4.2.min.js jquery-1.4.2-vsdoc.js JQuery_1.4.2_API.chm 在VS2008里引用jquery-1.4.2.js和jquery-1.4.2-vsdoc.js,可以支持jquery方法的智能提示。
《jQuery Mobile 1.4.2:移动应用开发利器》 在移动互联网飞速发展的今天,jQuery Mobile作为一款强大的前端框架,为开发者提供了构建响应式、触摸友好的移动Web应用程序的强大工具。尤其对于jQuery Mobile 1.4.2...
《jQuery 1.4.2与jQuery Cookie插件详解》 在Web开发中,JavaScript库jQuery因其简洁的语法和强大的功能而备受青睐。本篇将深入探讨jQuery 1.4.2版本及其与jQuery Cookie插件的使用,帮助开发者更好地理解和应用这...
jquery.mobile.custom.min.js v1.4.2 偶然发现这文件不好找还有挺贵,所以传一个