您的位置:首页 > 其它

DWR简介

2008-08-27 16:08 183 查看
DWR(Direct Web Remoting)是一个开源的类库,可以帮助开发人员开发包含Ajax技术的网站。它可以允许在浏览器里的代码使用运行在Web服务器上的Java函数,就像

它在浏览器里一样。DWR包含两个主要的部分,其一是运行在浏览器客户端的Javascript,这部分被用来与服务器通信,并更新页面内容;其二是运行在服务器端的Java Servlet,这部分被用来处理请求并将响应结果发送给浏览器。

DWR采取了一种动态生成基于Java类的Javascript代码的新方法来实现和处理Ajax。这样Web开发人员就可以在Javascript里像使用浏览器的本地代码一样使用Java代码,而实际上这些Java代码是运行在服务器端并且可以自由访问Web 服务器资源的。出于安全的考虑,Web开发者必须适当地配置,决定哪些Java类可以安全地被外部使用。

这个从Java到Javascript的远程功能方法给DWR的用户带来了非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有无插件运行在Web上的优势。

DWR认为浏览器/服务器协议没有那么重要,其更倾向于保证编程界面的简单自然。对此最大的挑战就是把Ajax的异步特性和正常Java方法调用的同步特性相结合。在异步模式下,结果数据在开始调用之后的一段时间之后才可以访问。DWR解决了这个问题,允许Web开发人员使用一个特殊的方法参数来指定一个函数,以便在数据返回后回调此函数。

图11-1来自DWR的官方文档,展示了DWR如何利用一些类似Javascript的onClick等事件的结果来改变一个下拉列表框的内容。这个事件处理器调用一个DWR生成的Javascript函数,它和服务器端的Java函数是匹配的。DWR接着处理了Java和Javascript之间的所有远程信息,包括转换所有的参数和返回需要的值。接着DWR执行了相应的回调函数(populateList)。这个例子演示了如何使用DWR功能函数来改变网页内容。

11-1 DWR交互过程







使用DWR可以有效地从应用程序代码中把Ajax的全部请求-响应循环消除掉。这意味着,客户端代码再也不需要直接处理XMLHttpRequest对象或者服务器的响应,不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成XML,甚至不再需要编写servlet代码把Ajax请求调整成对Java对象的调用。

DWR是作为Web应用程序中的servlet部署的。可以把它看做一个黑盒子,这个servlet有两个主要作用:首先,对于公开的每个类,DWR动态地生成包含在Web页面中的Javascript。生成的Javascript包含存根函数,代表Java类上的对应方法并在幕后执行XML HttpRequest。这些请求被发送给DWR,这时它的第二个作用就是把请求翻译成服务器端Java对象上的方法调用,并把方法的返回值放在servlet响应中发送回客户端,编码成Javascript。DWR还提供了帮助执行常见的用户界面任务的Javascript工具函数。

目前,DWR的新版本2.0.5(2008-8月),可以从其官方网站下载到最新的jar开发包、开发文档及案例,其官方网站为http://www.getahead.ltd.uk/dwr/

转自:http://book.csdn.net/bookfiles/159/1001596836.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: