Direct Web Remoting (DWR) 是一个开源的Java库,允许在Web应用程序中实现Ajax功能,即在客户端JavaScript和服务器端Java之间进行实时通信。DWR简化了这个过程,使得开发者无需处理底层的HTTP请求和响应,而是可以直接调用Java对象的方法。以下是对DWR配置和传值的详细说明: 1. **基本配置**: 在`web.xml`中,你需要配置一个名为`dwr-invoker`的Servlet。这是DWR的核心组件,负责处理所有与客户端的交互。基本配置如下: ```xml <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> ``` 这样的配置会将所有以`/dwr/`开头的URL映射到DWRServlet。 2. **调试模式**: 如果你想开启DWR的调试模式,可以在Servlet配置中添加初始化参数`debug`,并设置其值为`true`: ```xml <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> ``` 调试模式下,DWR会提供一个自动生成的测试页面,通过访问`http://localhost:port/app/dwr`,你可以查看和测试部署的Java类及其方法。 3. **多份`dwr.xml`配置**: - **一个Servlet,多个`dwr.xml`**:你可以在Servlet的初始化参数中指定多个`dwr.xml`配置文件,例如: ```xml <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>config-1</param-name> <param-value>WEB-INF/dwr1.xml</param-value> </init-param> <init-param> <param-name>config-2</param-name> <param-value>WEB-INF/dwr2.xml</param-value> </init-param> </servlet> ``` 这里,`config-1`和`config-2`是参数名,它们的值分别指向`dwr1.xml`和`dwr2.xml`。没有指定的`config-`参数默认会读取`WEB-INF/dwr.xml`。 - **多个Servlet,每个Servlet对应一个或多个`dwr.xml`**:如果你有多个DWRServlet实例,每个都可以有自己的配置文件,如下所示: ```xml <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> </servlet> <servlet> <servlet-name>dwr-invoker1</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>config-admin</param-name> <param-value>WEB-INF/dwr1.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> ... ``` 这样,`dwr-invoker1`Servlet将使用`dwr1.xml`配置,并且处于调试模式。 4. **DWR的传值**: DWR允许在客户端JavaScript和服务器端Java之间传递数据。这通常通过`DWREngine`对象或自定义的`RemoteObject`实例完成。例如,你可以定义一个Java方法,然后在JavaScript中调用它并传递参数: ```java // 服务器端Java类 public class MyService { public String doSomething(String input) { // 处理逻辑 return "Processed: " + input; } } ``` ```javascript // 客户端JavaScript var myService = new MyService(); myService.doSomething("Hello, DWR!", function(response) { alert(response); // 显示"Processed: Hello, DWR!" }); ``` 在这个例子中,DWR自动处理了参数的序列化和反序列化,以及异步调用的回调函数。 5. **安全性**: 在生产环境中,确保关闭调试模式,因为公开的调试页面可能暴露敏感信息。同时,你还可以通过DWR的安全特性,如IP白名单、Session验证等来保护你的应用。 6. **性能优化**: DWR提供了缓存机制、批量调用和压缩传输等功能,以提高性能。例如,通过配置`batch.size`参数,可以设置一次请求中最大可执行的方法数量。 7. **错误处理**: DWR会捕获服务器端的异常并将其传递回客户端,使得在JavaScript中可以处理这些错误。 DWR通过配置和API提供了灵活的远程调用方式,使得开发人员能够轻松地构建富客户端应用,同时保持服务器端代码的整洁和模块化。正确配置和使用DWR,可以帮助你实现高效、安全的Ajax通信。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 0
- 资源: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- AI绘画工具介绍(文档)
- pandas-2.2.2-cp311-cp311-musllinux-1-1-aarch64.whl
- 小程序开发基础与简单示例.pdf
- matlab:读取图像+显示图像+显示图像的直方图+直方图均衡
- pandas-2.2.2-cp311-cp311-manylinux-2-17-x86-64.manylinux2014.whl
- 如何充分运用ansys的HELP
- pandas-2.2.2-cp311-cp311-musllinux-1-1-x86-64.whl
- C语言可变长数组(VLA)详解与应用
- android-studio-2024.1.1.12-windows-zip.zip.001
- 辰光PHP客服系统多商户全开源V3.1版+安装教程
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)