DWR框架返回对象及参数类型详解

需积分: 9 2 下载量 169 浏览量 更新于2024-07-24 收藏 98KB DOC 举报
"这篇文章主要介绍了如何在DWR框架中处理返回对象,特别是对象如list、Map和Set,以及如何添加JavaBean到list中。" DWR(Direct Web Remoting)是一个开源的Java框架,它允许Web应用程序在客户端的JavaScript和服务器端的Java之间进行实时的双向通信。DWR简化了Ajax的开发,使得开发者能够直接调用服务器端的Java方法,就像它们是本地JavaScript函数一样。 1. **无返回值和参数的Java方法** 在DWR中,配置文件(dwr.xml)是关键。`<create>`标签用于定义可以暴露给JavaScript的Java类,creator="new"表示通过默认构造函数创建实例,javascript="testClass"指定了JavaScript中的对象名。`<includemethod>`则指定了要公开的方法。在JavaScript端,通过引入由DWR自动生成的接口文件(如TestClass.js)和核心库文件(engine.js和util.js),可以直接调用`testClass.testMethod1()`来执行服务器端的方法。 2. **有简单返回值的Java方法** 当Java方法有返回值时,DWR会自动将其转换为JavaScript可以理解的类型。例如,如果Java方法返回一个字符串,JavaScript中将接收到一个字符串。配置和调用方式与无返回值的方法类似,只是在调用后,可以通过回调函数接收返回值。 3. **返回复杂数据类型:list、Map和Set** DWR可以处理复杂的Java集合类型,如List、Map和Set。当Java方法返回这些类型的对象时,DWR会将它们转换为JavaScript数组或对象。例如,如果Java方法返回一个List<JavaBean>,在JavaScript端,这将表现为一个包含JavaBean对象的数组,每个元素都是一个具有相应属性的对象。 4. **添加JavaBean到list** 假设我们有一个JavaBean类,比如`User`,我们可以在Java方法中创建`User`对象并添加到list中,然后返回这个list。在JavaScript端,可以遍历接收到的数组,访问每个User对象的属性。 5. **处理异常** 如果Java方法抛出异常,DWR会捕获并将其转换为JavaScript错误对象,可以在JavaScript端通过try-catch语句处理。 6. **性能和安全考虑** 虽然DWR提供了方便的远程调用,但需要注意的是,频繁的服务器调用可能会增加网络延迟,影响性能。此外,由于直接暴露了服务器端方法,必须确保安全配置以防止跨站脚本攻击(XSS)和其他安全风险。 7. **DWR的其他功能** DWR还支持批量调用、异步调用、缓存策略、自动更新等高级特性,使得开发者能够构建更高效、更响应式的Web应用。 DWR通过XML配置文件和JavaScript接口,使得在Web应用中调用Java方法如同调用本地函数一般简单,无论是简单的数据类型还是复杂的对象集合,都能轻松处理。然而,使用DWR时,也应考虑性能优化和安全性,确保应用的稳定性和用户的安全。