### DWR初学者笔记知识点详解 #### 一、DWR简介 DWR(Direct Web Remoting)是一种简化Ajax编程的技术,它使得JavaScript可以轻松地调用服务器端的Java方法,从而实现更高效的前后端交互。DWR的核心在于它提供了一种机制,允许浏览器端的JavaScript代码直接访问服务器端的Java对象。 #### 二、DWR的使用步骤 ##### 2.1 添加DWR库 - **第一步**:将DWR的JAR包添加到项目中。通常,这可以通过构建工具如Maven或Gradle来完成,或者手动将JAR文件放入项目的lib目录下。 ##### 2.2 配置web.xml - **第二步**:在项目的`web.xml`文件中配置DWR的Servlet。具体配置如下: ```xml <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> ``` 这里设置了DWR Servlet的路径映射以及调试模式,便于开发过程中调试。 ##### 2.3 创建dwr.xml配置文件 - **第三步**:在`WEB-INF`目录下创建`dwr.xml`文件。该文件用于定义哪些Java类可以被远程调用,以及如何处理这些类的方法调用。例如: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD DirectWebRemoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr> <allow> <create javascript="JDate" creator="new"> <param name="class" value="java.util.Date"></param> </create> </allow> </dwr> ``` 在上述示例中,`<create>`元素定义了一个名为`JDate`的JavaScript对象,它对应于Java中的`java.util.Date`类。通过这种方式,JavaScript可以直接调用`JDate`对象的相关方法,而DWR会负责将这些调用转换为对Java对象的调用。 ##### 2.4 访问DWR管理页面 - **第四步**:启动服务器后,在浏览器中访问`http://localhost:8080/工程名/dwr`,可以看到DWR管理页面,显示了可用的JavaScript接口及其对应的Java类。 ##### 2.5 在网页中引入DWR JavaScript文件 - **第五步**:在HTML页面中引入DWR提供的JavaScript文件,以便在客户端调用远程服务。 ```html <script type='text/javascript' src='/DWRTest/dwr/interface/JDate.js'></script> <script type='text/javascript' src='/DWRTest/dwr/engine.js'></script> <script type='text/javascript' src='/DWRTest/dwr/util.js'></script> ``` 然后在JavaScript中调用这些接口,例如: ```javascript function show(msg) { alert(msg); } JDate.getDate(show); ``` 这里`JDate.getDate(show)`调用了服务器端的`getDate`方法,并将结果传递给了`show`函数,用于展示结果。 #### 三、Dwr.xml的DTD文档说明 - **根节点`<dwr>`**:包含了DWR配置的所有信息。 - `<init>`:定义了在DWR启动时需要自动加载并初始化的类。 - `<allow>`:定义了哪些Java类可以被客户端通过JavaScript远程调用。 - `<signatures>`:为需要的方法提供了签名,特别是在使用集合时,可以指定转换器使用的类别信息。 其中,`<allow>`下的`<create>`元素非常重要,用于声明哪些类可以被远程调用: - **`creator`属性**:指定如何创建要远程调用的类的实例。 - `new`:使用类的默认构造方法创建实例。 - `scripted`:允许使用脚本语言创建实例,如使用Beanshell。 - `spring`:从Spring容器中获取Bean实例。 - **`param`元素**:根据`creator`的不同,`param`元素有不同的用途。 - `name`为`class`时,其值为远程调用的类的全名。 - `name`为`language`时,其值为支持的脚本语言名称。 - `name`为`script`时,其值为用于创建对象的脚本。 - `name`为`location`时,其值为Spring配置文件中Bean的位置。 通过以上步骤,我们可以成功搭建起基于DWR的Ajax应用程序,实现前后端之间的高效数据交互。DWR的强大之处在于它可以极大地简化Ajax开发过程,让开发者更加专注于业务逻辑的实现。
- 粉丝: 11
- 资源: 18
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助