### DWR学习:深入解析DWR配置与工作原理
#### 一、DWR简介与应用场景
DWR(Direct Web Remoting)是一种简化Ajax应用开发的技术框架。它通过提供客户端JavaScript到服务器端Java方法的直接调用,使得开发人员能够更方便地构建交互式的Web应用程序。DWR的核心优势在于其对远程过程调用(RPC)的支持,使得服务器端业务逻辑能够直接通过JavaScript调用,从而减少了页面重载的需求。
#### 二、DWR配置文件详解
DWR的配置文件通常命名为`dwr.xml`,它是DWR框架正常运行的关键组成部分之一。该配置文件定义了哪些服务器端的方法可以通过客户端脚本来调用,以及如何处理这些调用的结果。
##### 1. DOCTYPE声明
每个DWR配置文件都必须以一个特定的DOCTYPE声明开头,用于指定DWR使用的DTD版本。例如:
```xml
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD DirectWebRemoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
```
这个声明告诉浏览器和服务器,该文件遵循的是DirectWebRemoting 1.0的DTD规范。
##### 2. `<dwr>`标签
`<dwr>`标签是配置文件的根元素,所有的配置项都位于这个标签之内。
##### 3. `<init>`标签
`<init>`标签用于声明用于创建远程bean和转换bean的类。虽然这是可选的,但在需要自定义转换器或创建器时非常有用。例如:
```xml
<init>
<creator id="userCreator" class="com.example.UserCreator"/>
<converter id="userConverter" class="com.example.UserConverter"/>
</init>
```
这里声明了一个名为`userCreator`的创建器和一个名为`userConverter`的转换器,它们分别用于创建和转换用户对象。
##### 4. `<allow>`标签
`<allow>`标签定义了哪些类可以被创建和转换。例如:
```xml
<allow>
<create creator="userCreator" javascript="User" scope="session">
<param name="password" value="secret"/>
</create>
<convert convertor="userConverter" match="User"/>
</allow>
```
在这个例子中,允许创建一个名为`User`的类,并且指定了一个密码参数。同时,也指定了一个转换器`userConverter`用于处理`User`类。
##### 5. `<signatures>`标签
`<signatures>`标签用于声明远程调用的方法签名,这对于验证方法调用的安全性和准确性非常重要。例如:
```xml
<signatures>
<signature create="userCreator" method="createUser">
<param type="java.lang.String" name="username"/>
<param type="java.lang.String" name="email"/>
</signature>
</signatures>
```
这个示例中定义了一个名为`createUser`的方法,它接受两个参数:用户名和电子邮件地址。
#### 三、DWR的工作原理
DWR通过客户端JavaScript与服务器端Java方法的直接通信实现了远程过程调用。当客户端执行JavaScript函数时,DWR框架会将这个调用封装成XML格式的数据发送给服务器端。服务器端解析这个请求,执行相应的Java方法并返回结果。结果再通过XML格式发送回客户端,客户端将其解析并更新UI。
#### 四、DWR中的术语解释
- **Converted**: 指的是在远程调用过程中需要转换的对象。例如,如果一个远程方法需要一个复杂的Java对象作为参数,那么这个Java对象就需要通过一个转换器(Converter)来转换为客户端可以理解的形式。
- **Created**: 指的是可以在客户端通过远程调用创建的远程Bean。例如,如果服务器端有一个`User`类,那么可以通过DWR在客户端创建这个类的实例,并调用其方法。
#### 五、总结
通过本文的学习,我们可以了解到DWR配置文件的结构及其各个部分的作用,理解了DWR如何配置和管理远程Bean及转换器的过程。对于想要深入研究DWR技术的人来说,掌握这些基础知识是非常重要的。