简单来说,DWR是一个引擎,将服务器端Java对象的方法暴露给JavaScript代码。通过DWR,您可以消除应用程序代码中所有Ajax请求-响应周期的机制。这意味着客户端代码不需要直接处理XMLHttpRequest对象或服务器的响应。您不需要编写对象序列化代码或使用第三方工具将对象转换为XML。您甚至不需要编写servlet代码来调解Ajax请求并调用Java域对象。DWR在您的Web应用程序中部署为servlet。将其视为黑盒子,此servlet扮演两个重要角色:首先,对于每个公开的类,DWR动态生成JavaScript以包含在您的Web页面中。生成的JavaScript包含存根函数,代表Java类上对应的方法,并在背后执行XMLHttpRequests(XMLHttpRequest请求)。这些请求发送到DWR servlet,后者将请求转换为对服务器端Java对象上的方法调用,并将方法的返回值编码为JavaScript,在其servlet响应中发送回客户端端。DWR还提供了一些JavaScript实用函数,帮助执行常见的UI任务。