Ajax整合的力量
本文转自:http://blog.sina.com.cn/s/blog_491f813701000anl.html 注:未作修改。
五 其他开源框架 使用 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 是位于 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 . .其客户端的 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.2 Ajax 实战 6.3 Ajax 修炼之道Pragmatic Ajax-Web2.0入门 6.4 Ajax 开发精要-概念、案例与框架 6.5 Ajax 高级程序设计 七 参考资源网站 点评: Jesse James Garrett 在这篇文章中第一次将这种融合多种技术的综合技术简称为 Ajax 。在这篇文章中, Jesse James Garrett 分析了现有 Web 应用程序的缺陷,定义了 Ajax 各个组成技术的职责,并且说明 Ajax 为何如此不同, Ajax 都应用在什么地方。最后, Jesse James Garrett 给出一份 FAQ ,解答人们对 Ajax 的各种问题。 7.2 Dojo 官方网站 7.3 Prototype 官方网站 7.4 DWR 官方网站 7.5 Script.aculo.us 官方网站 7.6 JSON-RPC 官方网站 7.7 Java 开源Ajax开发组件类别列表 点评: open-open.com 一个专门收集 Java 领域开源项目的网站。其将各个开源项目分门别类,提供项目介绍和导航。该页面介绍了当前大部分的 Ajax 开源项目,从中可以一窥 Ajax 开源的大致现状。 7.8 Ajax 中国 点评:《 Ajax 实战》一书的译者,国内最早关注 Ajax 应用的群体之一。站点上包含了大量介绍 Ajax 技术以及 Ajax 应用心得和经验的文章,值得 Ajax 开发人员参考和借鉴。 7.9 Ajax Pattern 点评: AjaxPatterns.org 是一个收集 Ajax 设计模式的站点,其已经发展成为 Ajax 技术的 WIKI ,内容涉及 Ajax 设计模式、 Ajax 书籍介绍、页面架构、框架、工具等等,是跟踪 Ajax 技术、提高 Ajax 开发设计水平的理想场所。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |