### DWR技术详解及其应用场景 #### 一、DWR简介 **DWR**(Direct Web Remoting)是一种简化Ajax编程的技术框架,它使得JavaScript能够直接调用Java后端方法成为可能,极大地简化了前端和后端之间的交互过程。无论你是经验丰富的开发者还是初学者,DWR都能够提供一套简单易用的方案,帮助你更好地处理客户端与服务器端的数据交换。 #### 二、DWR入门 ##### 2.1 简介 DWR的核心理念是将复杂的Ajax通信过程封装起来,提供简洁明了的API接口供开发者使用。通过这种方式,开发者无需深入理解底层细节即可完成高效的前后端交互。 ##### 2.2 第一个DWR程序:HelloWorld - **2.2.1 将DWR放入你的工程** 首先需要下载DWR的jar包,并将其添加到项目的类路径中。可以通过Maven或者直接从DWR官网下载最新的版本。 - **2.2.2 编辑配置文件** 配置文件`web.xml`用于设置DWR的基本属性,例如初始化参数、监听器等。这些配置决定了DWR的行为方式。 - **2.2.3 编写service** DWR的核心在于能够直接调用Java服务端的方法。开发者需要定义一个或多个Java类,其中包含希望被JavaScript调用的方法。这些方法通常不带参数,返回类型可以是任意的。 - **2.2.4 测试DWR** 在完成基本配置之后,可以通过浏览器访问特定URL来测试DWR是否正确部署。例如,在`http://localhost:8080/your-app/dwr/`中可以看到DWR的控制台输出。 - **2.2.5 编写一个jsp** 使用JSP页面作为前端展示,通过DWR提供的API来调用后端方法,并显示结果。在JSP中引入必要的DWR JavaScript库,然后定义一个按钮,点击该按钮触发调用后端的方法。 #### 三、DWR配置详解 ##### 3.1 `web.xml`配置 - **3.1.1 主要配置** `web.xml`中的`<servlet>`标签用于定义DWR的Servlet,而`<servlet-mapping>`则指定了请求的URL模式。 - **3.1.2 常用<init-param>参数列表** - **3.1.2.1 安全参数** 包括`secureCheck`、`secureCheckUrl`等,用于设置DWR的安全检查机制,防止恶意攻击。 - **3.1.2.2 Ajax服务器加载时保护参数** 如`protectFromAjaxLoading`,用于控制DWR在Ajax请求加载时的行为。 - **3.1.2.3 其他参数** 包括`debug`、`convertersPackage`等,分别用于开启调试模式和指定转换器包的位置。 - **3.1.3 日志配置** 可以通过设置日志级别来调整DWR运行时的日志输出。 - **3.1.4 多个dwr.xml配置和J2EE角色定义** 支持在一个项目中配置多个`dwr.xml`文件,每个文件可以对应不同的角色和服务。 - **3.1.5 插件配置** DWR支持多种插件扩展功能,如缓存插件、安全性插件等,这些插件需要在`web.xml`中进行配置。 - **3.1.6 测试模式配置** 开发过程中可以启用测试模式,便于调试。 ##### 3.2 `dwr.xml`配置 - **3.2.1 <init>标签** 用于定义全局配置项,如`debug="true"`表示开启调试模式。 - **3.2.2 <allow>标签** 控制哪些Java对象或方法可以被JavaScript访问。 - **3.2.2.1 Creator** 指定创建Java对象的方式,常见的有`bean`、`spring`、`struts`等。 - **3.2.2.2 Converter** 负责数据类型的转换工作,确保客户端传来的数据格式符合服务器端的要求。 - **3.2.3 <signatures>标签** 定义方法签名,明确指出方法的参数类型、返回类型以及异常处理方式。 #### 四、DWR与其他框架的整合 DWR不仅可以独立使用,还可以与多种主流框架集成,提高开发效率。 ##### 4.1 DWR与Servlet - **4.1.1 使用webContext的方法** 可以通过`dwr.util.Context`获取当前的Web上下文,从而访问Servlet的相关资源。 - **4.1.2 方法选择** 根据具体需求选择合适的集成方式,例如使用Servlet Filter或是在`dwr.xml`中指定Creator类型。 ##### 4.2 DWR与Spring - **4.2.1 让DWR和Spring一起工作的检查列表** 需要确保Spring和DWR版本兼容,正确配置Spring上下文路径等。 - **4.2.2 SpringCreator** 使用`spring`类型的Creator,指定Spring配置文件的位置。 - **4.2.3 找到Spring配置文件** DWR可以通过指定的路径自动加载Spring的配置文件。 - **4.2.4 使用Spring配置DWR** 通过Spring Bean的形式配置DWR的实例,实现更灵活的管理。 ##### 4.3 DWR与JSF - **4.3.1 JSFCreator** 专为JSF设计的Creator,可以更好地与JSF组件交互。 - **4.3.2 ServletFilter** 通过过滤器来集成DWR与JSF,确保请求经过适当的处理。 ##### 4.4 DWR与Struts - **4.4.1 Strutscreator** 适用于Struts的应用场景,利用Struts的Action来创建DWR的服务。 - **4.4.2 开始顺序** 确保Struts Filter在DWR Filter之前加载,以便正确处理请求。 ##### 4.5 DWR与Weblogic或PageFlow - **4.5.1 配置适应性** 根据Weblogic或PageFlow的特点调整DWR的配置,使其更好地与这两种框架配合。 ##### 4.6 DWR与Hibernate - **4.6.1 让DWR和Hibernate一起工作的检查列表** 需要确保Hibernate和DWR的版本兼容,配置正确的数据库连接等。 - **4.6.2 HibernateBeanConverter** 用于转换Hibernate实体类,确保数据能够在客户端和服务器端之间正确传输。 - **4.6.3 Session管理** 通过DWR提供的工具来管理Hibernate Session,保证Session的生命周期。 ##### 4.7 DWR与WebWork - **4.7.1 配置dwr.xml** 在`dwr.xml`中指定WebWork的Creator,实现与WebWork的无缝集成。 - **4.7.2 在JSP中导入脚本** 通过在JSP页面中引入必要的JavaScript库,利用DWR与WebWork交互。 - **4.7.3 高级** 探索更复杂的集成场景,例如使用自定义Converter处理特定的数据类型。 ##### 4.8 DWR与Acegi - **4.8.1 问题提出** Acegi是一个强大的安全框架,但在与DWR结合使用时可能会遇到权限控制等问题。 - **4.8.2 解决方案** 通过配置Acegi的拦截器,确保只有授权的用户才能调用特定的DWR方法。 #### 五、DWR中的JavaScript简介 ##### 5.1 简单的回调函数 通过DWR提供的API,JavaScript可以直接调用Java后端方法,并且能够轻松处理异步回调,简化了前后端交互的过程。 ##### 5.2 调用元数据对象 DWR还提供了调用元数据对象的功能,使得开发者可以获取关于服务端方法的信息,包括参数类型、返回值等,这对于前端开发来说是非常有用的功能。 通过以上内容,我们可以看出DWR不仅是一款强大的Ajax框架,而且能够很好地与其他主流框架集成,大大提高了开发效率和应用性能。无论是对于新手还是经验丰富的开发者来说,DWR都是一款值得学习和掌握的技术。
- 粉丝: 18
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助