DWR框架详解:对象处理与JavaScript调用

需积分: 9 2 下载量 60 浏览量 更新于2024-11-06 1 收藏 45KB DOC 举报
"dwr框架对象处理-经典" Direct Web Remoting (DWR) 是一个开源的Java库,它允许在Web应用程序中实现Ajax功能,即在客户端JavaScript和服务器端Java之间进行实时、安全的交互。DWR使得开发人员能够轻松地在浏览器中调用服务器上的Java方法,仿佛它们是本地JavaScript函数一样。以下是对DWR处理对象(如Object、List、Map)的经典方法的详细说明。 1. **DWR配置**: 在`dwr.xml`配置文件中,DWR定义了哪些Java对象和方法可以被JavaScript访问。`<allow>`标签用于定义允许的访问规则,`<create>`标签则用来创建可以在JavaScript中使用的Java对象实例。 - `<create>`标签的`creator`属性指定了创建Java对象的方式,如`new`表示使用默认构造函数实例化对象,也可以配置为`spring`以通过Spring IOC容器获取对象。 - `javascript`属性设置了JavaScript中访问Java对象的名称,例如`testClass`。 - `<param>`标签定义了Java类的全限定名。 - `<include>`和`<exclude>`标签分别用于指定可访问和禁止访问的方法。 2. **JavaScript调用**: 要在JavaScript中使用DWR,需要引入DWR生成的接口文件(如`TestClass.js`)、引擎文件`engine.js`以及实用工具文件`util.js`。这些文件提供了与服务器交互的API。 - `TestClass.js`包含了DWR自动生成的JavaScript接口,可以直接调用如`testClass.testMethod1()`的函数,这实际上是在调用服务器端的`testMethod1`方法。 3. **处理简单返回值**: 当Java方法返回简单类型时,DWR会自动将其转换为JavaScript可以理解的类型。例如,如果`testMethod2`返回一个整数,那么在JavaScript中可以直接获取这个值: ```javascript Function callTestMethod2() { testClass.testMethod2(function(response) { var result = response; // response将包含Java方法返回的值 // 处理返回值 }); } ``` 4. **处理复杂类型**: - 对于对象类型的返回值,DWR会生成一个JavaScript对象,该对象的属性与Java对象的字段相对应。 - 如果Java方法返回一个`List`,DWR会生成一个JavaScript数组,数组中的每个元素都是对应的JavaScript对象。 - 类似地,返回`Map`时,DWR会创建一个JavaScript对象,键是Java Map中的键,值是对应的JavaScript对象。 5. **数据转换和安全**: DWR提供了一套自动的数据类型转换机制,确保Java对象到JavaScript对象的安全转换。此外,DWR还支持数据验证和安全特性,如请求签名,以防止跨站脚本攻击。 6. **异步调用和回调**: DWR的调用通常是异步的,这意味着JavaScript代码不会阻塞等待服务器响应。当服务器返回结果时,可以通过回调函数处理返回的数据。 总结,DWR通过简洁的配置和自动化处理,使得Java对象、列表和映射可以在JavaScript中轻松使用,实现了前后端之间的无缝通信,极大地简化了Ajax应用的开发。通过理解和熟练使用DWR,开发者可以构建更高效、更动态的Web界面。