基于 Ajax 技术的 DWR 框架的研究与应用.doc

上传人:sccc 文档编号:5191812 上传时间:2023-06-12 格式:DOC 页数:7 大小:220.50KB
返回 下载 相关 举报
基于 Ajax 技术的 DWR 框架的研究与应用.doc_第1页
第1页 / 共7页
基于 Ajax 技术的 DWR 框架的研究与应用.doc_第2页
第2页 / 共7页
基于 Ajax 技术的 DWR 框架的研究与应用.doc_第3页
第3页 / 共7页
基于 Ajax 技术的 DWR 框架的研究与应用.doc_第4页
第4页 / 共7页
基于 Ajax 技术的 DWR 框架的研究与应用.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于 Ajax 技术的 DWR 框架的研究与应用.doc》由会员分享,可在线阅读,更多相关《基于 Ajax 技术的 DWR 框架的研究与应用.doc(7页珍藏版)》请在三一办公上搜索。

1、基于 Ajax 技术的 DWR 框架的研究与应用张二梅北京邮电大学计算机科学与技术学院,北京(100876)E-mail:meierzhang1983摘要:随着 Web 应用程序复杂性越来越高,传统的 Web 应用程序已经渐渐不能满足 Web浏览者更高的、全方位的体验要求了,于是具有高度互动性,给用户带来丰富体验的互联网 应用程序应运而生。Ajax 作为 Web2.0 的核心技术得到了广泛的发展,带给了我们更快,更高效,更强动态的应用,用户的体验也得到了极大的改善。为了减少开发的困难,很多框架出 现了,并对 HttpXmlRequest 对象进行了封装,减少了开发时的代码量,其中最适用于 Ja

2、va应用程序的 Ajax 框架是 DWR 框架。本文着重对 DWR 框架进行了分析研究,并结合具体 项目使其得到了很好的应用。关键词:DWR;Ajax;后端机制;级联菜单1. 引言随着 Web2.0 的发展,Ajax 技术越来越得到大家的认可和支持,它改变了 Web 站点强制 用户进入提交/等待/重新显示范例,具体的响应过程如图 1 3所示,解决了用户的动作总是 与服务器的“思考时间”同步的问题。J2EE 开发人员发现,在过去的几年里,我们经常关注“后 端机制(backend mechanics)”,在后端投入了太多的时间,而在使我们的 Web 用户界面对 用户自然和响应灵敏方面投入不足。为了

3、满足用户的浏览需求,提高应用程序的响应灵敏度, Ajax 作为 Web2.0 的核心技术,得到了广泛的发展,带给了我们更快,更高效,更强动态的应 用。- 7 -x提起 Ajax,大家无人不知。借助于 Aja 1,用户在单击按钮时,使用 JavaScript 和 DHTML立即更新 UI,并向服务器发出异步请求,执行更新或查询数据库。当请求返回时,就可以 使用 JavaScript 和 CSS 来相应地更新 UI,而不是刷新整个页面。最重要的是,用户甚至不3知道浏览器正在与服务器通信:Web 站点看起来是即时响应的,具体响应过程如图 2所示。图 1 传统的 Web 响应过程图 2 基于 Ajax

4、 的 Web 响应过程2. DWR 框架简介2.1 与其他框架的比较现在的 Ajax 框架有很多种,每个 AJAX Framework 都有提供自己的 XHR Utility 或包,2用来屏蔽各种前台操作。但是 DWR(Direct Web Remoting)是其中最专业也是支持最广的 AJAX 非同步传输 Framework.DWR 其实就是一个引擎,可以把服务器端 Java 对象的方法公开给 JavaScript 代码,有效地从应用程序代码中把 Ajax 的全部请求-响应循环消除掉,从而简化了代码。DWR 框架主要是针对 Java 开发的 Ajax-Web,是一个开放源码的使用 Apach

5、e 许可协议 的解决方案,它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。其中的 JavaScript 功能集把 HTML 页面调用应用服务器上的 Java 对象的方法简化了,它控制不同类 型的参数,并同时保持了 HTML 代码的可读性。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能。和其他框架相比,DWR 在服务端方面做的很出色,客户端可以直接调用服务端返回的 方法,可以自己生成一些 SCRIPT 代码。不过在 DHTML 方面比较逊色,没有很多插件可以 使用。但是,DWR 使用

6、自定义的简单文本协议,使用简单通用,用户也比较广,对缺少 DHTML 编程经验的开发者来说是个不错的选择。2.2 使用 DWR 框架的一般步骤4项目中使用 DWR,就必须将一个 dwr.jar 包添加进去,即将应用服务器的 servlet 容器(该容器将 Java 转换为 JavaScript)中添加了一个 servlet,uk,ltd.getahead.dwr.DWRServlet。 该 servlet 是使用 Java 和 JavaScript 对象之间的映射配置的,在 web 模块的 web.xml 中指定, 如下:dwr-invokerDWR Servletuk.ltd.getahea

7、d.dwr.DWRServletdebugtruedwr-invoker/dwr/*服务器端的 Java 类存放所需要的逻辑,客户端要呼叫这个 Java 物件,传给它参数,而 后传回一个字串,从而在客户端显示这个字串。为了告诉 DWRServlet 这件事,类在一个单 独的描述符 dwr.xml 中配置,配置指定允许 DWR 创建和转换的类,将类直接转换为对应的 JavaScript。其中 creator 设定为 new,表示使用 Hello 的无参数建模子来生成物件,javascript设定为 Hello,表示客户端 JavaScript 程式可以使用 Hello 来呼叫对应的 java.u

8、til.Hello 物件。具体配置如下:在页面中使用 DWR 的地方,必须在页面中加入如下的 script 。其中第一个是由DWRServlet 根据 dwr.xml 中的设定生成的,engine.js 负责客户端伺服端沟通,util.js 是一些 好用的 JavaScript 程式,可以让您少写很多 JavaScript,最后的一个 hello.js 是我们自订的函式, 即页面中引发的 JavaScript.3. DWR 的源码剖析3.1 客户端发送信息的过程透过 engine.js 可以看到客户端发送信息的过程。DWR 可以在客户端直接调用服务器端 的方法,为了提高效率,减少多次和服务器端

9、的通信,DWR 允许将几个调用组成一个 batch。 在 dwr.engine._sendData()方法中,我们可以得知 dwr 将数据封装成在 request.body 中。然后 通过 batch.req.send(request.body);发送到服务器端。batch.req 就是一个 xmlHttpRequest 对象 或者 ActiveXObject 对象(根据不同的浏览器会有不同)。服务器端从客户端把调用的方法名 和类名或者 spring 的 bean id 提取出来,根据配置文件找到对应的类和方法。然后执行之, 将结果返回。3.2 servlet 的工作过程Servlet 的详细

10、配置过程见 2.2 节代码所示,所有的/dwr/*所有请求都由这个 servlet 来处 理。web 服务器启动,DWRServlet init()方法调用,init 主要做了以下工作:设置日志级别、 实例化 DWR 用到的单例类(这些类在 jvm 中只有一个实例对象)、读去配置文件(包括 dwr.jar 包中的 dwr.xml,WEB-INF/dwr.xml.config*.xml )。DWRServlet.doGet, doPost 方法都调用 processor.handle(req, resp)方法处理。Processor 对象在 init()方法中已经初始化了。通过研究 proces

11、sor 的 handle 方法,知道 dwr/*处理的请求大概分三种:(1)dwr/index.html,dwr/test/这种只能在 debug 模式下使用,调试用。 dwr/engine.js,dwr/util.js,dwr/deprecated.js 当这个请求到达,从 dwr.jar 包中读取文件流, 响应回去(重复请求有缓存)。(2)当 dwr/interface/这种请求到来,(例如我们在 index.html 中的 )DWR 做一件伟大的事。把我们在 WEB-INF/dwr.xml 中的 java.util.Hello 转化为 javascript 函数。 细节也比较简单,通过

12、java 反射,把方法都写成javascript 特定的方法。(3)dwr/exec,javascript 调用方法时发送这种请求,可能是 XMLHttpRequest 或 IFrame 发 送。 当然,javascript 调用的方法签名与 java 代码一致,包括参数,还有 javascript 的回调 方法也传到了服务器端,在服务器端很容易实现。回调方法的 java 的执行结果 返回类似callMethod(结果)的 javascript 字符串,在浏览器执行。4. 项目级联菜单的实现4.1 项目需求与设计近期所做的项目管理系统中多处用到 DWR,其中比较典型的例子是动态级联菜单的使 用

13、。所谓动态级联菜单,指的是两个或多个下拉框(对应 HTML 中的 SELECT 标签),他们 存在父子关系。就是其中某个下拉框的值发生变化时,它的子下拉框可选择的值也会发生变 化,并且这些变化是动态地从数据库中取出来的。如果不用 Ajax 技术,一种方法是将所有 的判断代码都写到客户端,从而使客户端的代码大量增加,并且第一次加载页面的时候速度 比较慢。另一种方法是在服务器端实现,但每次选择都要对整个页面进行刷新,实现起来比 较麻烦,维护起来也困难。如果使用 DWR 框架就可以比较轻松的使用 Ajax 技术实现无刷 新动态级联菜单。本级联菜单是两个下拉框,第一个是产品类信息,第二个是产品系信息,

14、第二个下拉框 是第一个下拉框的子菜单,随着第一个菜单内容的变化而变化。具体实现方法如下:首先定义服务器端 Java 类,用来获取数据库中的动态信息(用 hibernate 实现),通过 type信息来返回对应的 series 信息,其接口方法类似于: public static String TypeLinkSerial(String type); 然后在 dwr.xml 中配置好响应的类和接口:最后是前台页面,其中 JavaScript 代码类似于:function refreshList() var type=document.forms0.elementstype.value; AllD

15、ao.TypeLinkSerial(link,type);function link(data) DWRUtil.removeAllOptions(serial);DWRUtil.addOptions(serial, data);Jsp 页面中的下拉框:4.2 实验结果在产品类型的下拉框中不选择任何选项的时候,产品系下拉框中没有任何内容。当选择 产品类型中的“配套产品”选项时,产品系下拉列表中就相应出现选项。如图 3 所示。图 3 级联菜单使用5. 结束语本文通过具体的实例介绍了 DWR 的使用方法和使用技巧,以及如何应用于实际的项 目。DWR 作为典型的服务器端框架,其设计构思很巧妙,只需要

16、简单配置就可以自动把 Java 类转化为 JavaScript 类,而且可以和任意 Web 框架相集成,隐藏了 HTTP 协议,使用者极易 测试,具有极强的扩展性。但是,因为 DWR 直接暴露了服务器端的 java 代码,所以在其安 全性方面还存在一定的欠缺,还需要进行更深入的研究与改进。参考文献1张桂元等.征服 Ajax Web2.0 快速入门与项目实践(java).人民邮电出版社.2006 年 6 月2曹衍龙等.Ajax 编程技术与实践.人民邮电出版社.2007 年 5 月 3王沛等.征服 Ajax Web2.0 开发技术详解.人民邮电出版社.2006 年 6 月 4Dave Crane

17、Eric Pascarello.Ajax 实战.人民邮电出版社.2006 年 4 月The research and application about DWR framework based on Ajax technologyZhang ErmeiBeijing Key Lab of Intelligent Telecomm Software and Multimedia, School of CST, BeijingUniversity of Posts and Telecommunications, Beijing (100876)AbstractWeb applications ha

18、ve become more and more complexity and the traditional web applicationprocedures have been gradually not meet the higher, all-encompassing experience requirements. Therefore,the highly interactive, rich experience to the users of the Internet application come intobeing. Ajax, as the core technology

19、of the Web2.0 brings us faster, more efficient and more dynamic applications and develops quickly. In order to reduce the difficulties of the coding development, many frameworks are emerging, and package the object of the HttpXmlRequest and reduce the code. The most suitable for the java application of the Ajax framework is DWR. So this paper focuses on DWR framework for analysis and getting a good application in conjunction with specific projects.Keywords: DWR; Ajax; Backend Mechanics; Cascade Menu作者简介:张二梅,女,1983 年出生,河南开封人,北京邮电大学工学硕士研究生,主要 研究方向为多媒体与通信软件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号