### DWR原理与应用详解 #### 一、DWR简介 DWR (Direct Web Remoting) 是一种简化Ajax编程的技术框架。它通过提供一套简洁的API和机制,使得客户端JavaScript可以直接调用服务器端的Java方法,从而实现了浏览器与服务器之间的无缝通信。DWR的核心优势在于其简化了传统的Ajax开发过程,使开发者能够更专注于业务逻辑而非复杂的前端脚本编写。 #### 二、DWR入门 ##### 2.1 简介 DWR是一种基于Java的开源框架,它提供了一种简单的方法来构建Ajax应用程序。通过DWR,开发者可以轻松地在客户端JavaScript中直接调用服务器端的Java方法,而无需手动处理XML或JSON数据格式。这极大地提高了开发效率,并简化了前后端的交互过程。 ##### 2.2 第一个DWR程序:HelloWorld **2.2.1 将DWR放入你的工程** 为了开始使用DWR,首先需要将DWR的相关库文件添加到项目中。这些文件通常包括`dwr.jar`和其他必要的依赖库。可以通过Maven或Gradle等构建工具自动下载这些依赖,或者手动下载并将它们放在项目的类路径下。 **2.2.2 编辑配置文件** DWR使用`web.xml`和`dwr.xml`两个配置文件来控制其行为。`web.xml`是标准的Java EE web应用配置文件,用于声明DWR的servlet和过滤器等。`dwr.xml`则专门用于配置DWR的行为,如权限控制、序列化方式等。 **2.2.3 编写service** 在DWR中,需要定义一个或多个service,这些service实际上是指定可以被客户端调用的Java类。这些类通常会被注释为DWR service,并且需要指定哪些方法可以被远程调用。 **2.2.4 测试DWR** 完成基本配置后,可以通过编写简单的客户端JavaScript代码来测试DWR是否正确配置。例如,可以通过调用一个简单的`sayHello()`方法来验证DWR是否工作正常。 **2.2.5 编写一个jsp** 最后一步是在JSP页面中集成DWR的功能。通常会在JSP中引入DWR的JavaScript库,并通过JavaScript调用server-side的方法。 #### 三、web.xml配置 **3.1 主要配置** 在`web.xml`文件中,主要配置包括注册DWR的servlet和过滤器。此外,还可以通过`<init-param>`标签来设置DWR的各种配置参数。 **3.2 常用<init-param>参数列表** - **安全参数**:用于控制访问权限,如`allowSameOrigin`等。 - **Ajax服务器加载时保护参数**:如`protectFromAjaxLoading`,防止在Ajax请求未完成时客户端重新加载页面。 - **其他参数**:包括日志级别、序列化方式等。 **3.3 日志配置** 通过设置`logLevel`参数来控制DWR的日志级别,这对于调试和维护非常重要。 **3.4 多个dwr.xml配置和J2EE角色定义** 当项目中有多个DWR配置文件时,需要在`web.xml`中指定每个文件的作用域。此外,还可以定义不同的J2EE角色,以便根据用户角色控制对DWR服务的访问。 **3.5 插件配置** DWR支持多种插件扩展,如安全性插件、性能优化插件等。这些插件通常需要在`web.xml`中进行配置。 **3.6 测试模式配置** 可以在`web.xml`中启用测试模式,这对于开发和调试阶段非常有用。 #### 四、dwr.xml配置 **4.1 纵览** `dwr.xml`文件主要用于定义DWR服务的行为和权限控制。 **4.2 <init>标签** `<init>`标签用于初始化DWR服务,可以在这里设置全局的配置选项。 **4.3 <allow>标签** - **Creator**:用于指定创建对象的方式,如使用Spring或自定义创建器。 - **Converter**:用于定义数据类型转换规则,确保不同类型的数据能够在客户端和服务器之间正确传递。 **4.4 <signatures>标签** 该标签用于定义服务接口中方法的签名,即方法名、返回类型以及参数类型等。 #### 五、整合 DWR可以很好地与其他流行框架和技术栈整合,以满足不同应用场景的需求。 **5.1 DWR与Servlet** DWR可以通过`Servlet`接口与传统的Servlet进行交互。通过使用`webContext`方法,可以轻松地在DWR服务中获取Servlet上下文。 **5.2 DWR与Spring** DWR与Spring的整合非常紧密。Spring可以作为DWR的服务创建器,提供依赖注入等功能。通过Spring配置文件可以方便地管理和控制DWR服务。 **5.3 DWR与JSF** DWR与JSF的结合使得开发者可以利用JSF丰富的UI组件,并结合DWR的强大远程调用功能,创建高度动态的Web应用程序。 **5.4 DWR与Struts** DWR可以与Struts框架进行整合,使用StrutsCreator来创建DWR服务。这种整合方式适用于已经使用Struts的项目。 **5.5 DWR与Weblogic或PageFlow** DWR同样可以与Weblogic服务器和PageFlow技术栈整合,为基于Weblogic的应用提供强大的Ajax支持。 **5.6 DWR与Hibernate** DWR可以与Hibernate框架整合,通过HibernateBeanConverter来处理Hibernate实体的序列化问题。此外,还需要考虑如何管理Hibernate Session以支持DWR的异步调用。 **5.7 DWR与WebWork** DWR与WebWork框架的整合涉及到配置DWR服务以及在JSP页面中引入相应的脚本库。 **5.8 DWR与Acegi** 针对安全性需求较高的应用,DWR可以与Acegi安全框架结合使用,实现细粒度的安全控制。 #### 六、DWR中的JavaScript简介 **6.1 简单的回调函数** 在DWR中,可以通过简单的回调函数实现异步请求后的响应处理。这种方法可以显著提高用户体验,避免页面刷新带来的延迟感。 **6.2 调用元数据对象** 除了基本的远程方法调用外,DWR还支持调用服务器端的对象元数据,如对象的属性和方法信息等。这对于动态生成UI元素非常有帮助。 通过以上内容的学习,我们可以看出DWR不仅简化了Ajax开发流程,而且提供了强大的扩展性和灵活性,使其成为构建现代Web应用程序的理想选择之一。无论是对于初学者还是经验丰富的开发者,DWR都具有很高的实用价值。
- 粉丝: 45
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 交织与解交织FPGA设计,有详细实验文档
- QPSK调制解调 FPGA设计,有详细实验文档,有讲解视频
- 定制UE5编辑器布局:打造个人化的工作空间
- 华为OD面试题,常见的面试和笔试题目,涵盖技术、算法和综合能力
- Matlab Simulink:单级式三相光伏并网系统(光伏板+LCL逆变器+电网) 组成部分及功能: 1.主电路:由光伏板+L
- jTessBoxEditorFX-2.6.0.zip训练TesseractOcr字库工具
- java 如何操作gbase8s的clob例子
- python opencv 图像转视频脚本工具
- HPMSM的飞轮储能并网控制simulink仿真 注意:MATLAB R2021b搭建(可转低版本,但是可能会出现器件不全)
- IPD400N06N-G-VB一种N-Channel沟道TO252封装MOS管