什么是DWR
全名 Drect Web Remoting 开源,免费的Ajax框架
将Java类发布为JavaScript可调用的脚本对象,提供JavaScript工具类,简化页面编码
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).
DWR原理
运行在服务端的 Java Servlet,用来接收请求和发送响应到浏览器
运行在客户端的 JavaScript,用来发送请求和动态更新页面。DWR 依靠动态的 Javascript 来工作,这些 Javascript 脚本是基于 Java 类的。代码产生一些 Ajax 的动作使之看起来像是发生在浏览器中的客户端,但事实上是服务端在执行这些代码,DWR负责数据的转换,然后来来回回的传输所产生的数据。
DWR 主要由两部分组成
运行在服务端的 Java Servlet,用来接收请求和发送响应到浏览器
运行在客户端的 JavaScript,用来发送请求和动态更新页面。DWR 依靠动态的 Javascript 来工作,这些 Javascript 脚本是基于 Java 类的。代码产生一些 Ajax 的动作使之看起来像是发生在浏览器中的客户端,但事实上是服务端在执行这些代码,DWR负责数据的转换,然后来来回回的传输所产生的数据。
1.新建一个项目
将 dwr.jar , commons-logging-1.04.jar , log4j-1.2.12.jar 三个文件拷贝到
WEB-INF/lib 目录中,因为DWR 需要使用日志记录
2. DWR 使用一个Servlet 来处理用户的异步请求和发送响应,所以我们需要在web.Xml 中配置这个Servlet
可以打开dwr.war 这个实例包,然后打开 /WEB-INF/web.xml 文件,拷贝其中有关servlet
部署的代码到我们工程的web.Xml 中
3.编写一个 java 类,供客户端进行调用

4.客户端要使用javaScrip 调用Hello 类中的sayHello 方法,并且还要传递参数,然后返回一个字符串,客户端显示这个字符串。此时必须告诉 DWR 的 Servlet 我们只要做的事情,如何告诉?DWR 是通过一个 xml 文件告诉Servlet 的,这个xml 文件就是dwr.xml. 在与web.xml 同目录中创建该文件。

creator: new,spring,none
javaScript:生成客户端的对象,避免使用Javascript关键字
scope:对象保存的范围
param ,creator构造器参数,如new构造器参数:
<param name=“class” value=“类的全限定名" />
include,指定的可以方法名。
exclude,指定拒绝访问的方法名。
避免使用 Javascript 关键字或者保留字,因为这些用Javascript 关键字或者保留字命名
的方法会自动执行。大部分的Javascript 关键字或者保留字也是Java 的关键字或者保
留字,比如,“try()”不是一个合法的命名。不过还是有一部分的Javascript 关键字或
者保留字在Java 中不被限制,比如“delete()”。
避免使用方法重载。有时候,在调用这些重载的方法会引起麻烦,因为Javascript 没
有像Java 那样的包命名机制来支持方法重载。



上面出现了预期的结果,说明通过测试了

也就是说,DWR 为我们生成好了Hello 类对应的JavaScript 调用的js 文件,我们需要在jsp文件中引入上面的三个js 文件, util.js 是一个工具,可以根据情况决定是否引用。

所有部署描述文件的顶级根元素为dwr,其按照顺序可以包含以下三个子元素之一。
init:此元素定义那些在应用程序启动时作为DWR 运行库所需的类自动加载并初
始化的类。
allow:此元素定义那些允许客户端Javascript 远程调用的Java 类。
signatures:此元素签名必要的方法,当使用集合的时候,为转换器指定Java 反射
机制外的类别信息。

元素名称 属性名称 父 元 素 用 途
dwr dwr.xml 文档的根元素
init dwr 定义那些在应用程序启动时作为DWR 运行库所
需的类自动加载并初始化的类
creator init 定义供Javascript 调用的新建对象的方法,即对
象的构造方法
id creator 用来惟一标识creator 所创建的对象。必需属性
class creator 应用creator 元素定义的Java 对象的完整名称。
必需属性
converter init 定义Javascript 对象和Java 对象之间新的转换
方法。有些类有默认的转换机制,但有些类需要
自定义转换机制
id converter 用来惟一标识converter 所创建的对象。必需属
性
class converter 应用converter 元素定义的Java 对象的完整名
称。必需属性
allow dwr 定义那些允许客户端Javascript 远程调用的
Java 类
create allow 定义允许创建的Java 类,并为其指定一个
Javascript 名称,并定义DWR 应当如何获得要进
行远程的类的实例
creator create create 元素所使用的构造方法名称。必需属性
续表
元素名称 属性名称 父 元 素 用途
javascript create Java 类暴露给浏览器调用的Javascript 名称。必
需属性
scope create create 元素所创建的类的可用范围,默认为
page。可选属性
param create 指定create 元素所需要的参数,比如其允许创
建的Java 类的名称
name param param 元素所指定的参数名称。必需属性
value param param 元素所指定的参数值。必需属性
include create 指定应当公开的方法的名称。必需属性
exclude create 指定那些想防止被访问的方法
auth create 为暴露给浏览器的方法指定允许访问的角色
method auth 指定需要访问角色限制的方法。必需属性
role auth 指定允许访问的角色。必需属性
convert allow 告诉DWR在服务器端 Java 对象表示和序列化
的 Javascript 之间如何转换数据类型
converter convert 指定所使用的转换器的标识。必需属性
match convert 与转换器所匹配的类名称。必需属性
param convert 指定转换器所要包含的参数
name param param 元素所指定的参数名称。必需属性
value param param 元素所指定的参数值。必需属性
signatures dwr 签名必要的方法,当使用集合的时候,为转换
器指定Java 反射机制之外的类别信息