- 浏览: 696013 次
- 性别:
- 来自: 福建
文章分类
最新评论
-
羽翼的心动:
同意2楼的说法,我们公司之前一个项目用过pageoffice, ...
poi导出excel文件工具类 -
贝塔ZQ:
poi实现导出excel文件,蛮麻烦的,用pageoffice ...
poi导出excel文件工具类 -
aishiqiang:
为什么我的项目配置好证书后,每次使用jenkinst自动构建包 ...
关于使用https协议,cas认证PKIX path building failed错误解决方法 -
zhongmin2012:
谢谢分享,正在想看
AST解析java源文件相关jar包 -
mybestroy1108:
感谢分享!受益良多!
Jboss7 JMS demo
不再有页面刷新:使用jQuery
相关厂商内容
你的第一杯Web 2.0 —— 快速浏览jQuery、Spring MV和XStream/Jettison
使用JSF、Ajax和Seam开发Portlets(2/3)
InfoQ中文站电子杂志《架构师》试刊第二期发布了
下载免费的 IBM DB2 Express-C 数据库
IDC:《软件商成长路线图》白皮书免费下载
相关赞助商
InfoQ中文站Java社区,关注企业Java社区的变化与创新,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Java技术社区提供一流资讯。
在我参与创建的一些Web网站应用中,一直存在有对用户理所当然的抱歉:“哦,对不起,我不得不让你经受一些不必要的页面刷新。”哈,这就是我在今年年初听说jQuery后,我的脑子里一下闪过的念头。
jQuery是个强大而非侵入式的JavaScript库,但它的名字起得很差劲。它的简洁而高可读性的语法再次激发了我编写JavaScript代码的兴趣。它的非侵入性能让它只需要对既有代码做小小的修改,就能很容易为web应用添加一些丰富的功能——比如后台表单提交。当你工作在一个很大的代码库,或者扩展性的重构无法取得成效时,非侵入的特性显得尤其重要。我的老板不会给我四周的时间推倒重来,为一个已经存在的网站添加一些视觉效果。但我也许可以有四个小时的时间,而这对jQuery来说足够了。
作为一个简单的例子,我们假设有一个汽车搜索功能,它会基于一个交通工具型号来返回结果。向文本框输入文本,点击提交,然后显示结果。JSP看起来会是这样:
在用户输入名称并点击提交后,在页面刷新时整个屏幕会变白,然后就会显示出结果来。这不是一个好的用户体验。现在,让我们用jQuery来改善一下用户的体验,只刷新页面中那部分的确需要改变的部分。对这个既有页面所做的修改是:
- 把搜索表单和搜索结果分成两个单独的JSP页面,这样结果也可以独立的显示,而不需要重新渲染搜索的表单。
- 在搜索表单JSP上添加一个
占位符,来存放搜索的结果。
- 添加一行jQuery代码,来在后台使用AJAX提交搜索表单内容,并把结果存放在占位符
中。
修改后的代码是这样的:
当用户输入名称并点击了提交时,只有搜索结果的
这段代码的意思是:
第2行——“当页面加载完成时……”
第3行——“找到一个id为searchForm的表单,并让它变成具备AJAX功能的表单(在后台提交)”
第4行——“使用POST方法而不是GET”
第5行——“把搜索的结果放在一个id为searchResults的DIV中”
这几行jQuery代码以$()开始,并总是会选择某个元素来进行操作,比如“document”或者“#searchForm”。jQuery就像是个装饰器,可以让你为元素添加各种各样有趣的行为,比如具备AJAX提交功能的表单、可视化效果、拖拽等等。
这个例子演示出几行代码所包含的众多功能,也表达了为什么我会喜欢jQuery:使用装饰器方法来增强既有的web应用,是非常理想而完美的。不需要重写既有的HTML,你使用jQuery就可以添加新的行为。
使用Spring MVC和XStream/Jettison返回数据而不是HTML
第一个例子中,jQuery是用在了客户端,而在服务器端没有什么显著的变化。我们仍然保留基本的流程,用户在浏览器上点击某个元素,创建一个服务器请求,然后返回HTML内容。当如果服务器端能返回JSON或者XML格式的数据,而不是HTML,会怎样呢?
返回数据而不是可以展现的HTML,这可以让客户端缓存结果,从而减少服务器请求的次数。数据本身要比HTML简洁很多——这样也减小了返回结果的尺寸。请看下面的这个例子:
在优化后的流程中,三次用户交互只会产生一次服务器请求。
还有许多潜在的可以由服务器返回的数据格式。具体选择哪种,可以根据情况而定。下面是一些选项以及选择的原因:
服务器请求格式 | 何时使用 | 使用频率 |
完整HTML页面 | 初始页面加载 | 低 |
HTML片段 | 在服务器端展现更加容易而且有必要。比如使用流行的标签库来显示一个table。 | 低 |
JSONB { "car": { "id": "5", "make": "Acura", "model": "MDX" } } |
在大多数服务器响应中都可以使用的数据格式。简洁,并且很容易跟JavaScript配合工作。 | 高 |
XML Acura MDX |
复杂的无法轻松使用JSON表示的数据。XML的结果包括元素和属性,而JSON只包含元素。 | 低 |
让我们来看一个服务器返回JSON数据到浏览器的例子。我们把原来的汽车型号搜索页替换成一个新的页面,它包含一个制造商(make)和型号(model)的下拉列表。当用户选择制造商时,对应那个制造商的所有模型就会自动更新。如果用户选择了一个型号,下面就会显示一张列满该可用型号年代的表格。
由服务器端开始,我们会看到我们如何使用Spring MVC以及XStream和Jettison来创建JSON数据。首先我们会构建一个Spring MVC控制器:
第1行——@Controller注解告诉Spring MVC把这个类用作一个控制器。
第4行——@RequestMapping注解将请求URL映射到处理方法上。
第6行——创建ModelAndView对象,其中view名称为carselector,它将会映射到carselector.jsp。
第7行——使用键值makeList将一个制造商(Make)列表添加到ModelAndView中。这个对象可以在JSP中通过${makeList}来取到。
第11行——再一次,@RequestMapping注解将请求URL映射到处理方法上。
第12行——@RequestParam将一个请求参数对应到一个方法参数上。
第13行——通过我写的叫做JsonView的JSON视图类来创建ModelAndView对象。Spring MVC让编写自定义视图类变得非常简单,而JsonView中就包含了XStream的逻辑。
第14行——使用JsonView所期望的键值将型号(Model)的列表添加到ModelAndView。
总的来说,控制器会响应两个URL,“carselector.html”和“models.html”。它通过一个标准的JSP视图针对 “carselector.html”返回一个HTML页面。让我们来看看JsonView类,它针对“models.html”返回JSON结果:
第4行——使用JettisonMappedXmlDriver来初始化XStream,从而输出JSON而不是XML。
第6行——Spring MVC视图类必须实现render()方法。
第9行——从model中取出之前由控制器创建的数据。
第11行——实际生成JSON(尽管方法叫做toXML)。
它就是那么简单。XStream库也包含一套注解,你可以将其放在你自己的域中或者传输对象上,来提示如何展现JSON,但一般来说这个库基本不需要什么配置。
现在服务器端就生成了JSON,但客户端如何使用它呢?针对这个问题,我们需要再次来利用jQuery。请记住,我们需要处理两个事件:从“制造商(make)”下拉列表中选择数值会更新“型号(model)”下拉列表中的数据。而选择型号(model)下拉列表中的数值会填充型号(model)年代表格中的数据。下面是用jQuery的ready方法来绑定事件处理方法:
“select[name^=make]”表达式看起来非常像CSS选择器,那是因为jQuery选择器是CSS选择器的一个超集(就好像CSS和 Regex有一个共同的孩子)。这些表达式相当强大,可以用来同时选择一个或多个对象。在这个例子中,表达式的意思是,“选择一个名字叫‘make’ 的
在infoQ网站上看到了这边文章,挺不错的,与大家共享下,希望对你以后的开发有帮助!
发表评论
-
linux 定时任务检查服务器是否正常
2014-02-28 22:21 4640通过curl命令判断url返回状态,以此来确定服务是否正常: ... -
poi导出excel文件工具类
2014-01-20 21:54 7207package m.utils.excel; imp ... -
课程设计--家庭财务管理系统
2012-04-14 16:58 1789记得第一次接触FLEX3是在毕业那一年,那时已经工作了大半年了 ... -
what's MINA?
2011-03-15 23:09 1332what's MINA? Apache MINA is a ... -
如何避免吧.svn文件编译到classes目录下
2011-01-25 09:47 0SVN是一个很好用的版本管理根据,但有一个很烦人的问题用ecl ... -
Java 异常处理及其应用
2010-10-26 12:46 1336Java 异常处理的忌讳引 ... -
AST解析java源文件相关jar包
2010-08-26 14:57 10437今天有个处理需要涉及到java源文件的解析,baidu、goo ... -
使用ejb3配置开发SessionBean
2010-08-25 17:06 0Session Bean除了可以使用注释来发布外,也可以使用相 ... -
oracle clob类型处理
2010-08-23 11:13 0oracle clob类型处理 update clob字段放 ... -
ibatis 事务回滚操作
2010-08-11 13:54 0public StateBean deleteTask(M ... -
设计模式 之 “适配器模式[Adapter Pattern]”
2010-07-15 08:58 1072适配器模式[Adapter Pattern]类图 适配器模 ... -
帮朋友写的个关键字搜索器
2010-07-14 10:33 1375上礼拜一朋友让我帮忙写个小软件,需求大概是这样的:一个 ... -
实现xml到JavaBean的转换
2010-05-15 22:08 1633今天心血来潮,想实现xml到JavaBean的实现,baidu ... -
使用apache mail发送邮件错误解决办法
2010-04-28 16:29 7892今天在写发送邮件的程序时发现了以下两个些错误,贴出来跟大家分享 ... -
jbpm4部署异常
2010-03-15 10:11 0java.lang.LinkageError: loader ... -
spring 单元测试:java.lang.SecurityException
2010-03-05 20:06 0spring 单元测试抛出: java.lang.Secur ... -
eclipse安装spket插件(javascript工具)
2009-12-18 15:29 0eclipse安装spket插件(javascript工具) ... -
使用java excel api 导出数据到excel
2009-12-11 16:06 0找到一个java操作excel的api,连接地址http:// ... -
java int转byte[]
2009-11-05 13:39 0/** * int转byte[] * @pa ... -
附件下载
2009-10-28 14:35 0/** * 下载 * @param reques ...
相关推荐
XStream必须架包
Spring 3.0 的一个新特性是 O/X Mapper。O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML。它的目的是在 Java 对象(几乎总是一个 plain old Java object,或简写为 POJO)和 XML 文档之间来回转换。 例如,...
使用XStream序列化/反序列化对象
XStream:XStream是一个简单易用的Java库,用于序列化和反序列化对象。它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 <groupId>com.thoughtworks.xstream</groupId> <artifactId>...
weixin-java-mp-demo-springmvc, 微信公众号demo,使用weixin-java-tools,基于Spring MVC框架
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...
XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...
xstream最新版jar包
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
标签:activemq-transport-xstream-2.0.jar.zip,activemq,transport,xstream,2.0,jar.zip包下载,依赖包
xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html
赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...
//第一步:准备好要进行XML转换的OBJECT对象,并且类里的属性都要有get与Set方法; 如下: Address address1 = new Address("郑州市经三路", "450001"); Address address2 = new Address("西安市雁塔路", ...
xstream-1.4.19.jar
XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...
Xstream生产xml和解析xml
xstream jar包,java对象转xml以及xml转java对象,操作很简单。
利用xstream技术生成和解析XML文件的例子。同时里面包含xstream1.3.1.chm帮助文档,jar包(xstream-1.3.1.jar、jettison-1.0.1.jar、xpp3_min-1.1.4c.jar、junit.4.8.1.jar),还有sstream1.3.1源码。
它包括XStream jar和在构建时使用的任何其他库,或可选的运行时额外功能。 建议使用Xpp3,因为它将大大提高XStream的性能。 文献资料 文档可以在。 这包括: 和 资源 XStream的完整源代码捆绑在-src存档中。 这...