DWR2.x推技术详解:主动模式与被动模式

需积分: 3 1 下载量 41 浏览量 更新于2024-09-15 1 收藏 84KB DOC 举报
"DWR的推技术" DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript和Java在Web应用中进行实时通信,实现了Ajax的功能。DWR的推技术,即DWR Reverse Ajax,是服务器端向浏览器端推送数据的一种方法,无需用户进行任何操作,可以实现实时的数据更新,提升用户体验。 DWR2.x版本的推技术主要有三种实现方式: 1. **Piggyback方式**: 这是DWR的默认模式。在Piggyback模式中,服务器端只有在接收到客户端的Ajax请求时才会推送数据。当页面进行下一次Ajax请求时,服务器会将等待推送的内容附加在响应中返回给客户端。这意味着数据的更新依赖于客户端的定期请求,因此可能延迟更新。 2. **Comet方式**: Comet技术是一种持久连接的方式,服务器与客户端建立连接后,保持连接不关闭,而是在有新数据时立即通过这个连接将数据推送给客户端。这种方式能实现即时更新,但缺点是可能会占用大量服务器资源,因为连接一直保持打开状态。 3. **Polling方式**: 定时轮询(Polling)是客户端定期向服务器发送Ajax请求,询问是否有新数据。如果有,服务器会在响应中包含这些数据。虽然不如Comet实时,但对服务器资源的需求相对较低,因为不需要保持大量连接。 使用DWR的推技术通常涉及以下步骤: 1. **配置DWR**: 在`web.xml`中添加DWR的Servlet配置,如示例代码所示。`<servlet-class>`指定为`uk.ltd.getahead.dwr.DWRServlet`,并设置参数`debug`来开启调试模式。 2. **创建Java类**: 在服务器端定义Java类,这些类的方法会被暴露给JavaScript调用。这些方法通常用于处理数据的更新和推送。 3. **编写JavaScript**: 在客户端,使用DWR的API来注册服务器端的方法,并监听推送事件。当有新数据可用时,DWR会自动调用预先注册的方法,将数据传递给JavaScript。 4. **实现推送逻辑**: 根据需求选择合适的数据推送模式(Piggyback、Comet或Polling),并在服务器端实现相应的逻辑,例如在数据变更时触发推送。 5. **安全与优化**: 考虑到性能和安全性,可能需要对连接数量、超时时间等进行适当设置,防止服务器过载。 通过DWR的推技术,开发者能够构建更动态、实时的Web应用,无需刷新页面即可获取服务器的最新信息,提升了交互性和用户体验。然而,需要注意的是,持续的连接可能会对服务器性能造成影响,因此在设计时需要平衡实时性与资源消耗。