### DWR技术详解 #### 一、DWR概述与入门 **DWR**(Direct Web Remoting)是一种简化Ajax应用程序开发的技术,它使得JavaScript能够直接调用服务器端的Java方法,而无需编写复杂的Ajax代码。这极大地提高了开发效率,并简化了前端与后端之间的交互逻辑。 **1.1 DWR简介** DWR最初由Joe Walker于2003年发布,其设计目的是为了减少客户端JavaScript代码与服务器端Java代码之间通信的复杂性。通过DWR,开发者可以轻松地利用服务器端的功能,如数据库访问、业务逻辑处理等,而不必关心复杂的XML处理或其他低级细节。 **1.2 第一个DWR程序:HelloWorld** 为了更好地理解DWR的工作原理,我们可以通过一个简单的示例——“HelloWorld”来开始。 **1.2.1 将DWR放入你的工程** 首先需要将DWR的jar包添加到项目的类路径中。通常情况下,DWR的最新版本可以从其官方网站下载获得。 **1.2.2 编辑配置文件** 接下来,需要在`web.xml`中配置DWR的servlet和filter。这是为了让服务器知道如何处理来自客户端的请求。配置文件可能包含以下内容: ```xml <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> ``` **1.2.3 编写service** Service是DWR的核心概念之一,它代表了可以在服务器端被远程调用的Java类。例如,可以创建一个名为`HelloService`的简单service: ```java public class HelloService { public String getHelloMessage(String name) { return "Hello " + name; } } ``` **1.2.4 测试DWR** 启动服务器后,可以通过浏览器访问`http://localhost:8080/yourapp/dwr/`来查看DWR的管理控制台,这里可以看到所有的service及其方法。 **1.2.5 编写一个jsp** 在JSP页面中使用DWR提供的JavaScript库来调用服务器端的方法: ```html <script type="text/javascript" src="/yourapp/dwr/engine.js"></script> <script type="text/javascript"> var call = new dwr.util.Callback({ callback: function(result) { alert(result); } }); call.append('/helloService.getHelloMessage', ['world'], function() {}); </script> ``` **1.3 本章总结** 通过以上步骤,我们可以构建一个基本的DWR应用,实现了简单的服务器端方法调用。这为后续更复杂的应用场景奠定了基础。 #### 二、DWR的配置 **2.1 主要配置** DWR的配置主要集中在两个文件中:`web.xml`和`dwr.xml`。`web.xml`用于定义servlet和filter,而`dwr.xml`则用来配置具体的service和其他高级特性。 **2.2 常用<init-param>参数列表** **2.2.1 安全参数** - `secureCheckEnabled`:启用安全检查。 - `secureCheckMethod`:指定执行安全检查的方法。 **2.2.2 Ajax服务器加载时保护参数** - `protectFromAjaxLoaders`:防止Ajax加载器绕过安全设置。 **2.2.3 其他参数** - `debug`:开启调试模式。 - `cacheable`:是否缓存静态资源。 **2.3 日志配置** 通过在`dwr.xml`中配置日志级别,可以控制日志输出的详细程度。 **2.4 多个dwr.xml配置和J2EE角色定义** 可以为不同的应用配置多个`dwr.xml`文件,并且可以通过J2EE角色定义来区分不同用户的访问权限。 **2.5 插件配置** DWR支持多种插件,如SpringCreator、JSFCreator等,这些插件可以方便地集成DWR与其他框架。 **2.6 测试模式配置** 在开发阶段,可以启用测试模式来获取更详细的调试信息。 #### 三、DWR的高级特性 **3.1 纵览** DWR提供了丰富的特性和配置选项,以满足不同场景的需求。除了基本的远程方法调用外,还包括安全性控制、序列化机制以及与各种框架的整合能力。 **3.2 <init>标签** 用于初始化DWR环境,包括设置全局配置项等。 **3.3 <allow>标签** 控制哪些Java类和方法可以被远程调用。这对于安全性至关重要。 **3.3.1 Creator** Creator用于定义如何创建服务对象实例。例如,可以使用SpringCreator来通过Spring容器创建对象。 **3.3.2 Converter** Converter负责处理数据类型的转换。DWR内置了几种转换器,同时也支持自定义转换器。 **3.4 <signatures>标签** 用于声明服务方法的签名,包括返回类型和参数类型等。 #### 四、DWR与主流框架的整合 DWR可以与许多流行的Java EE框架进行无缝整合,如Spring、Struts、JSF等。 **4.1 DWR与Servlet** DWR可以通过webContext的方法与Servlet进行交互,提供了一种灵活的方式来管理DWR的生命周期。 **4.2 DWR与Spring** - **4.2.1 让DWR和Spring一起工作的检查列表** - 配置Spring容器。 - 使用SpringCreator创建服务对象。 - **4.2.2 SpringCreator** - 通过Spring容器创建服务对象。 - **4.2.3 找到Spring配置文件** - 指定Spring配置文件的位置。 - **4.2.4 使用Spring配置DWR** - 在Spring配置文件中定义DWR相关的bean。 **4.3 DWR与JSF** - **4.3.1 JSFCreator** - 使用JSF容器创建服务对象。 - **4.3.2 ServletFilter** - 在JSF环境中配置DWR的过滤器。 **4.4 DWR与Struts** - **4.4.1 Strutscreator** - 通过Struts配置文件创建服务对象。 - **4.4.2 开始顺序** - 确保DWR的初始化在Struts之前完成。 **4.5 DWR与Weblogic或PageFlow** 对于使用Weblogic等应用服务器的情况,需要注意DWR的初始化顺序以及其他兼容性问题。 **4.6 DWR与Hibernate** - **4.6.1 让DWR和Hibernate一起工作的检查列表** - 配置Hibernate。 - 使用HibernateBeanConverter。 - **4.6.2 HibernateBeanConverter** - 转换Hibernate实体对象。 - **4.6.3 Session管理** - 控制Hibernate session的打开和关闭。 **4.7 DWR与WebWork** - **4.7.1 配置dwr.xml** - 在dwr.xml中配置WebWork相关的参数。 - **4.7.2 在JSP中导入脚本** - 使用DWR的JavaScript库。 - **4.7.3 高级** - 实现更复杂的交互功能。 **4.8 DWR与Acegi** - **4.8.1 问题提出** - Acegi的安全模型与DWR的整合问题。 - **4.8.2 解决方案** - 使用自定义的安全拦截器。 #### 五、DWR中的JavaScript **5.1 简单的回调函数** 在DWR中,可以轻松地实现异步请求和回调函数,这使得与服务器端的交互变得更加直观和高效。 **5.2 调用元数据对象** DWR还提供了一种机制来获取服务器端对象的元数据信息,这对于动态生成UI元素非常有用。 DWR不仅简化了Ajax应用的开发过程,而且提供了丰富的配置选项和强大的框架整合能力,使其成为构建现代化Web应用的理想选择。
- 粉丝: 8
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助