DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。DWR包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据。另外一方面,一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容。
DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码。这样WEB开发人员就可以在JavaScript里使用Java代码,就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源。出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用。这个从JAVA到JavaScript的远程功能方法给DWR的用户带来非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有运行在WEB上但是不需要浏览器插件的好处。
DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的简单自然。对此最大的挑战就是把AJAX的异步特性和正常JAVA方法调用的同步特性相结合。在异步模式下, 结果数据在开始调用之后的一段时间之后才可以被异步访问获取到。DWR允许WEB开发人员传递一个回调函数,来异步处理Java函数调用过程。另外,dwr还是文件的一种格式:比如以Dreamweaver软件里有查找和替换,经常用的查找和替换内容可以保存,保存的文件就是以.dwr结尾的文件。这种文件用记事本打开后可以看到它的内容。
有两种方式可以开始DWR的应用。一种是直接从其官方网站下载DWR的Web应用示范包,这是一个war的部署包,从中可以对DWR的应用效果及其部署方式有一个大概的了解。不过这种方式无法详细掌握如何将DWR与Web应用程序紧密集成。另外一种方式是根据DWR官方开发文档的讲解,通过一步步的部署和配置,将DWR集成到Web应用程序中。
DWR的最新版本DWR 0.6添加许多特性,如:支持Dom Trees的自动配置,支持Spring(JavaScript远程调用spring bean),更好浏览器支持,还支持一个可选的commons-logging日记操作。DWR采用一个Java Servlet来处理请求并将响应结果发送给浏览器,这个Java Servlet需要加入到Java Web应用程序的部署描述文件web.xml。其次,它通过一个自定义的部署描述文件dwr.xml来控制Java对象与Javascript的转化。