本文转自:http://blog.sina.com.cn/s/blog_491f813701000anl.html
注:未作修改。
五 其他开源框架
5.1 AjaxAnywhere
AjaxAnywhere 是 sourceforge.net 另外一个开源的 Ajax 项目,其设计的初衷是要将已有的 JSP 和 JSF 组件转换成为具备 Ajax 功能的组件,而且这一转换过程不需要复杂的 Javascript 编码。与其他解决方案项目, AjaxAnywhere 不是基于组件的,比如在 AjaxAnywhere 就找不到类似 Ajax Tags 的输入自动完成( auto-complete )组件。
使用 AjaxAnywhere 可以将页面简单的划分为多个区域( zone ),然后调用 AjaxAnywher 刷新( Refresh )那些指定的区域,而不是整个页面。 AjaxAnywhere 使用“分区刷新”的思路,其工作原理如下:
1 、使用 AjaxAnywhere 自定义标签库将一个 Web 页面划分为几个可重载的区域( reload-capable zones )。
2 、使用 AjaxAnywhere Javascript 应用编程接口( API )替代传统通信机制下表单提交方式。
3 、当请求在服务器端处理的时候,决定那些页面区域可以刷新( refresh )。这个过程可以使用基于客户端的 Javascript 或者基于服务器端的 AjaxAnywhere 应用编程接口( API )。
4 、在服务器端, AjaxAnywhere 会生成包含即将更新的 HTML 代码的 XML 文档。
5 、在客户端, AjaxAnywhere Javascript 接受这个 XML 文档,解析文档,并更新指定的页面区域。
采取这样的设计思路,可以尽可能的降低 Javascript 代码量,降低 Ajax 的开发门槛:
.
由于缺乏被广泛接受的命名习惯、格式化规则和模式,使得 Javascript 编码相对 Java/JSP 复杂许多。尤其在浏览器兼容性方面缺乏有效的调试和单元测试手段。使用 AjaxAnywhere 可以摆脱这些 Javascript 的复杂性。
.
使用 AjaxAnywhere 不需要改变底层的应用程序代码。
.
可以随时在传统的通信机制和 Ajax 之间切换,允许 Web 应用程序同时支持两种通信机制。
.平滑的兼容性。
再也不用在使用 Ajax 还是传统的交互方式间摇摆了,使用 Ajax AnyWhere 的 Web 应用程序可以兼容两种请求方式。
AjaxAnywhere 的客户端脚本经过了 IE 、 Mozilla Firefox 和 Opera 等浏览器的兼容性测试,能够最大程度的保证代码的浏览器兼容性。
另外,还需要注意的 AjaxAnywhere 特性是, Ajax 接收到的 Ajax 代码采用特殊的方式处理。 AjaxAnywhere 通过 eval_r(“”) 的方式执行这些 Javascript 代码,也可以将所定义的 Javascript 函数保存在适当的上下文( Context )中。不过,在允许 Ajax 方式重载的页面区域,不允许执行 document.write() 之类的 Javascript 语句。
允许重载的区域可能在提交请求之前就确定了,这种情况下需要重载客户端的 AjaxAnywhere.getZonesToReload() 的 Javascript 函数,不需要额外的服务器逻辑处理。
如果希望 AjaxAnywhere 重载整个文档,则重载后的 AjaxAnywhere.getZonesToReload() 函数必需返回“ document.all ”字符串。也可以在服务器端调用 AAUtils.setRefreshAll(true) 刷新整个页面。
相应的, Ajax 请求中的 response.sendRedirect() 会被转化成 Javascript 代码的 location.replace() 命令。
5.2 Ajax Tags
Ajax Tags 是一组 Jsp 标签,用来简化 Ajax 技术在 JSP 页面中的使用。其提供了一些常见功能的标签如下拉列表级联选择,用户在文本框中输入字符自动从指定的数据中匹配用户输入的字符( Google Suggestion 功能,输入建议)等。整个 Ajax Tags 构建在 JavaScript 框架之上。本节将简要介绍 Ajax Tags ,包括其提供的几个 Ajax 标签,并利用这些标签构建几个简单的应用。
Ajax Tags 是位于 sourceforge.net 上面的一个开源 Ajax 项目,其出发点在于应用标签封装的思想,实现一些常用的 Ajax 应用,提高开发效率。 Ajax Tags 提供一系列的标签,简化在 JSP 页面中使用 Ajax 的过程。 Javascript 在 Ajax 中占很大的比重,但实际上不少服务器端的开发人员掌握的 Javascript 知识并不完整(按照正常分工,页面构建应该是网页设计人员或者前端开发人员的职责)。
.
.下拉列表级联选择( select Box population based on selections made from another field ),即当选择一个下拉列表时,另一个下拉列表的列表项则根据上一个下拉列表的情况自动更新。
.
.图像关联( toggling images )。
.表单域状态开启和关闭( form field states on/off )。
Ajax Tags 的实现包含 Javascript 和 Java 类,其中, Java 类基于 JDK1.4 编译,需要 Servlet 容器支持;而 Javascript 文件可以在 Firefox1.1+ 和 IE5.0 以上版本环境下运行。
5.3 SWATO
SWATO ( Shift Web Application To ……)是一组可复用的易集成的 Javascript/Java 库,可以快速的使 Web 应用程序的交互方式转变成 Ajax 方式。其主要特点有:
.
.其客户端的 Javascript 库可以运行在多种支持 XMLHttpRequest 的浏览器上。
.其使用 JSON 方法编组服务器上的 POJO 数据,很容易在任何 Javascript 环境中操作远程 POJO 对象,不管是使用硬编码还是与其他 Javascript 库集成。
.其提供简单的接口,使客户端的 Javascript 可以直接操作服务器上暴露给客户端的 POJO 对象。
.其使用多个可复用的控件( Javascript 模版、 Javascript 日志等),使开发 Web 应用程序更加容易。
其提供简单灵活的在 web.xml 中配置使用 Servlet 和 Filter (过滤器)的方式,集成 Spring 。
与 DWR 类似, SWATO 提供了通过客户端 Javascript 直接调用远程服务器端 Java 对象和 EJB 接口的实现。不同的是, SWATO 使用 JSON-RPC-Java 机制来实现客户端 Javascript 远程调用服务器端 Java 和 EJB 接口。
在 SWATO 中,客户端接受的数据可以是 JSON(SWATO 的后台是直接把 Java 对象映射成 JSON) ,也可以是 XML( 你可以从远端 URL 中获取 XML,它在 SWATO 客户端引擎中被转化为 JSON) 。所以对于开发人员来说,它在客户端所要关心的只是 JavaScript 对象。 ( 结构与 Java 对象或 XML 结构对应 ) 。然后利用 SWATO 提供的一些视图组件 (AutoSuggest,Select,Form) 进行渲染。对于自定义性比较强的视图控件,你可以在前端使用 Template 引擎 (来自 TrimPath,类似于 Velocity 的简单语法),甚至可以把它封装成你自己的组件,只要在其中实现 gotResult 与 gotError 函数,便可以很轻松的与 SWATO 远程调用功能集成。
六 推荐书目(按出版顺序排列)
6.1 Ajax 基础教程
国内出版的第一本 Ajax 书籍,重点介绍 Ajax 及相关的工具和技术,主要内容包括 XHR 对象及其属性和方法、发送请求和处理响应、构建完备的 Ajax 开发工具、使用 JsUnit 测试 JavaScript 、分析 JavaScript 调试工具和技术,以及 Ajax 开发模式和框架等,适合作为 Ajax 的入门书籍阅读。
6.2 Ajax 实战
Amazon.com 畅销书,目前 Ajax 领域最全面深入的著作。其中不仅有对于基础知识的介绍,还有对于 Ajax 开发中重大的体系架构问题的深入探讨,总结了大量 Ajax 开发中的设计模式,并讨论了框架、安全性与性能等等。书中提供了几个典型的例子,兼顾各种开发平台,这些例子的代码稍作修改就可以直接应用于项目开发之中。
6.3 Ajax 修炼之道Pragmatic Ajax-Web2.0入门
原书作者是 Ajaxian.com 的创始人, JavaOne 、 TheServerSide 等诸多高级别会议的演讲者。本书作为 Pragmatic 系列之一,从实践出发,通过实例展示 Ajax 的诸多特性,手把手教你实现 Google Map 的绚丽效果。不仅教会你 Ajax 的技术细节,同时还带你了解各种功能强大的主流 Ajax 工具包( Dojo 、 Prototype 、 Script.aculo.us 、 DWR 、 Backbase 、 SmartClient 、 Ajax.NET 、 SAJAX 、 JSON-RPC ),掌握 Ajax 实时查看源代码的方法以及进行代码调试的相应方法,学习 Ajax 的开发模式和框架。本书后半部分共用了五个章节,从服务器端编程的角度,详细讲述了 Ajax 同 PHP 、 Ruby On Rails 、 Java 和 .NET 等语言的融合,最后还介绍了与 Ajax 相类似的其他 RIA 技术以及 Ajax 的精彩未来( E4X,Canvas,SVG,的相关应用)。本书秉承了《程序员修炼之道》的特点—— “从小工到专家”,各个层次的 web 开发人员都能从本书中获益匪浅。
6.4 Ajax 开发精要-概念、案例与框架
本书从概念、案例与框架三个角度来详细阐述 Ajax 开发技术,先介绍 Ajax 的由来、优势及其在 Web 开发中的地位,接着详细介绍 Ajax 的各项组成技术、封装、开源和商业框架等各种相关知识,并提供丰富实用的开发案例和综合案例,引导读者一步步地了解并掌握利用 Ajax 进行 Web 应用程序开发的方方面面。
6.5 Ajax 高级程序设计
本书是关于 Ajax 技术、模式和使用场景的开发人员级教程,不仅介绍了 Ajax 的基本知识,还讨论了 Ajax 模式和框架,同时针对 XML( 包括 XPath 和 XSLT) 、 RSS / Atom 、 Web 服务、 JSON 和 Web 用户界面组件等主题,阐述了如何将 Ajax 与这些技术有效地结合在一起,并给出了一个使用 Ajax 开发的 Web Mail 系统完整实例。书中经典的实例、完整的源代码,都将给读者带来“实战”的指导。
七 参考资源网站
7.1 Ajax : A New Approach to Web Applications
http://www.adaptivepath.com/publications/essays/archives/000385.PHP
点评: Jesse James Garrett 在这篇文章中第一次将这种融合多种技术的综合技术简称为 Ajax 。在这篇文章中, Jesse James Garrett 分析了现有 Web 应用程序的缺陷,定义了 Ajax 各个组成技术的职责,并且说明 Ajax 为何如此不同, Ajax 都应用在什么地方。最后, Jesse James Garrett 给出一份 FAQ ,解答人们对 Ajax 的各种问题。
7.2 Dojo 官方网站
http://dojotoolkit.com
7.3 Prototype 官方网站
http://prototype.conio.net
7.4 DWR 官方网站
http://getahead.ltd.uk/dwr/overview/dwr
7.5 Script.aculo.us 官方网站
http://script.aculo.us
7.6 JSON-RPC 官方网站
http://json-rpc.org
7.7 Java 开源Ajax开发组件类别列表
http://www.open-open.com/67.htm
点评: open-open.com 一个专门收集 Java 领域开源项目的网站。其将各个开源项目分门别类,提供项目介绍和导航。该页面介绍了当前大部分的 Ajax 开源项目,从中可以一窥 Ajax 开源的大致现状。
7.8 Ajax 中国
http://www.ajaxcn.org
点评:《 Ajax 实战》一书的译者,国内最早关注 Ajax 应用的群体之一。站点上包含了大量介绍 Ajax 技术以及 Ajax 应用心得和经验的文章,值得 Ajax 开发人员参考和借鉴。
7.9 Ajax Pattern
http://ajaxpatterns.org/
点评: AjaxPatterns.org 是一个收集 Ajax 设计模式的站点,其已经发展成为 Ajax 技术的 WIKI ,内容涉及 Ajax 设计模式、 Ajax 书籍介绍、页面架构、框架、工具等等,是跟踪 Ajax 技术、提高 Ajax 开发设计水平的理想场所。