- 浏览: 308923 次
最新评论
-
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
hunanjun000:
《研磨struts2》第四章 Action 之 4.5 Action的其它重要知识
14.4 使用JSON插件
14.4.1 JSON基础
JSON(JavaScript Object Natation),它是一种轻量级、基于文本、语言无关的数据交换格式,类似于XML,是一种结构化数据串行化的文本格式,常常用于服务器与JavaScript之间的数据交换上。
JSON是从ECMAScript语言标准衍生而来的,定义了一套简单的格式化规则,JSON可以描述四种简单的类型,包括字符串、数字、布尔值及和null;还可以描述两种结构化类型,包括对象和数组。
当然,更多JSON具体的语法不是这里关注的重点,有需要的朋友请参见http://json.org/,在那里可以获取更多的JSON的知识。
14.4.2 JSON插件
为了更容易使用JSON,Struts2提供了JSON插件,这个插件提供了名为“json”的ResultType,如果设置某个Result的类型为json,那么JSON插件会把这个Action对象序列化成为一个json格式的字符串,然后再向客户端返回这个字符串。
要使用JSON插件,只需要把struts2-json-plugin-2.1.8.1.jar文件拷贝到WEB-INF/lib里面即可。
JSON插件提供了一些参数,供大家在有需要的时候选用,可以通过他们实现更精确的控制,基本的参数罗列如下:
- excludeProperties:输出结果需要去除的属性值,支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式。如下示例代码就表示,user属性里面的password属性不会被序列化输出,代码如下:
includeProperties:输出结果中需要包含的属性值,支持正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。如下示例就表示输出user的所有属性,代码如下:
root:根据ognl表达式取出你需要输出的结果的根对象,如下示例就表示输出user的name属性的值,代码如下:
- excludeNullProperties:表示是否去掉空值, 默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值
- ignoreHierarchy:表示是否忽略继承关系,默认值是true,也就是在输出的时候不会自动把父级对象序列化并输出。
当然,JSON插件还有很多的参数,这里就不去一一罗列了,有兴趣的朋友请参见https://cwiki.apache.org/confluence/display/WW/JSON%20Plugin,哪里有详尽的参数说明。
14.4.3使用JSON插件来实现Ajax
沿用前面演示Ajax的示例,实现最常见的输入校验的功能,通过Ajax来判断输入的ID是否重复,并给出相应的提示信息。
(1)Action的写法跟以前差不多,示例代码如下:
- public class AjaxAction extends ActionSupport {
- private String account;
- private String password;
- private String msg;
- public String getAccount() {
- return account;
- }
- public void setAccount(String account) {
- this.account = account;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getMsg() {
- return msg;
- }
- public void setMsg(String msg) {
- this.msg = msg;
- }
- public String execute() throws Exception {
- //准备已经注册的数据,测试使用
- Set<String> set = new HashSet<String>();
- set.add("account1");
- set.add("account2");
- set.add("account3");
- if(set.contains(account)){
- msg = "输入不正确,请重新输入";
- }else{
- msg = "输入正确";
- }
- return this.SUCCESS;
- }
- }
注意:Action的属性需要提供getter/setter方法,不能用public属性的方式进行值的对应,否则JSON插件是不会正确序列化属性值的。
(2)struts.xml的配置有一些变化,首先是不再继承struts-default,而是改为继承json-default;其次result的type要设置为json,示例代码如下:
(3)页面也有一些变化,主要是在获取Action的返回值过后,需要通过eval方法来把json字符串造型成为一个对象,然后把这个对象中的msg属性的值设置到div中显示即可,示例代码如下:
- <%@ page contentType="text/html; charset=gb2312"%>
- <head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"></head>
- <script language="javascript">
- var myRequest;
- function t1(){
- //准备向后台传输的数据
- var account = document.getElementById("account").value;
- //Ajax
- myRequest = new ActiveXObject("Msxml2.XMLHTTP");
- myRequest.onreadystatechange = t2;
- myRequest.open("GET","ajaxAction.action?account="+account,true);
- myRequest.send(null);
- }
- function t2(){
- if(myRequest.readyState==4){
- var ret = myRequest.responseText;
- //把json造型成对象
- var obj = eval("("+ret+")");
- //后续处理,把对象的msg设置到div中显示出来
- document.all("myDiv").innerHTML = obj.msg;
- }
- }
- </script>
- <form action="" medhot="post">
- <table>
- <tr>
- <td colspan=3 align=center>新用户注册</td>
- </tr>
- <tr>
- <td>用户帐号:</td>
- <td><input type="text" id="account" name="account" onblur="t1();"><font color=red>*</font></td>
- <td><div id="myDiv"></div></td>
- </tr>
- <tr>
- <td>用户密码:</td>
- <td colspan=2><input type="password" id=""password" name="password"></td>
- </tr>
- <tr>
- <td>重复密码:</td>
- <td colspan=2><input type="password" id=""password2" name="password2"></td>
- </tr>
- <tr>
- <td colspan=3 align=center><input type="submit" value="保存注册信息"></td>
- </tr>
- </table>
- </form>
去运行看看,效果应该跟前面AJAX演示的效果是一样的。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4132.html】
欢迎访问http://sishuok.com获取更多内容
发表评论
-
研磨struts2 目录贴
2012-08-24 12:12 163331.1 《研磨struts2》 第一章 Struts2 ... -
跟着cc学设计 之 研磨设计模式 视频教程 出炉了
2012-08-15 07:16 2研磨设计模式——跟着CC学设计系列精品课程,上线了! ... -
研磨struts2 目录
2012-07-30 21:15 2471.1 《研磨struts2》 第一章 Strut ... -
研磨struts2 目录
2012-07-30 16:54 361.1 《研磨struts2》 第一章 Stru ... -
《研磨struts2》A.2 struts.properties的配置 之 A.2.1 概述
2012-07-09 12:10 3055A.2.1 概述 如果我们希望覆盖在 ... -
《研磨struts2》附录A Struts2的配置 之 A.1 struts.xml的配置
2012-07-09 12:10 2710A.1 struts.xml的配置 A.1.1 ... -
《研磨struts2》第二十一章 零配置 之 21.3 通过注解来实现零配置
2012-07-06 08:07 291121.3 通过注解来实现零配置 21.3.1 ... -
《研磨struts2》第二十一章 零配置 之 21.2 约定大于配置
2012-07-05 10:44 245821.2 约定大于配置 21.2.1 约定 ... -
《研磨struts2》第二十一章 零配置 之 21.1 概述
2012-07-05 10:44 231321.1 概述 21.1.1 零配置概述 在 ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.3 整合Struts2与SiteMesh
2012-07-04 08:15 2072在Struts2中使用SiteMesh ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.2 单独使用SiteMesh
2012-07-03 08:00 209120.2 单独使用SiteMesh 20. ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.1 调整应用的风格
2012-07-03 07:59 185520.1 调整应用的风 ... -
《研磨struts2》19.2 使用execAndWait拦截器模拟进度条 之 19.2.1 模拟长时间运行的Action
2012-07-02 12:24 213719.2.1模拟长时间运行的Action ... -
《研磨struts2》第十九章 进度条 之 19.1 使用“进度条”告知用户进度
2012-07-02 12:23 214119.1 使用“进度条”告知用户进度 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.3 Struts2结合JFreeChart
2012-06-28 12:12 199918.3 Struts2结合JFreeChart ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.2 Struts2插件概述
2012-06-28 12:11 2022Struts2并没有求大求全,企图把所有 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.1 JFreeChart使用
2012-06-20 15:48 227818.1 JFreeChart使用 18.1.1概 ... -
研磨struts2(1-10章)电子书下载
2012-06-19 07:30 6058研磨struts2的博客文章 私塾在线学习网 《研 ... -
《研磨struts2》第十七章 防止重复提交 之 17.3 更强大的tokenSession拦截器
2012-06-18 13:46 206917.3 更强大的tokenSession拦截器 ... -
《研磨struts2》第十七章 防止重复提交 之 17.2 使用标签
2012-06-18 13:45 233317.2 使用<s:token/>标签 ...
相关推荐
这个压缩包中的“研磨Struts2配书视频对应的演示源代码”是《研磨Struts2》一书作者为了帮助读者更好地理解和实践书中理论知识而提供的实际示例代码。 首先,让我们深入理解Struts2的核心概念和技术特性: 1. **...
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 ...以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
根据提供的文件信息,我们可以推断出这是一份关于《研磨Struts 2》书籍PDF版本的下载资源。为了更好地理解和概括这份资料所涉及的知识点,我们先来了解一下Struts 2框架及其重要性,然后深入探讨《研磨Struts 2》这...
此外,PPT可能还会涵盖Struts2的插件系统,如Tiles、FreeMarker和JSP视图技术的集成,以及如何使用Struts2与Spring、Hibernate等其他框架进行整合,实现松耦合的企业级应用。Struts2的国际化和本地化支持也是重要的...
研磨Struts2 高清完整版,请和第一部分一起下载啊
此外,Struts2还提供了对JSP、FreeMarker等视图技术的支持。 4. **HelloWorld示例**:这是学习任何新框架的第一步。书中详细介绍了如何创建一个简单的Struts2应用,从Servlet+JSP+JavaBean实现MVC模式,然后逐步...
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式...
第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式...
第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式...
第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元...
研磨设计模式.part2 一定要下载5部分