DWR技术详解:JavaScript与后台交互及反推应用

需积分: 3 4 下载量 135 浏览量 更新于2024-09-19 收藏 1.34MB PPT 举报
"dwr技术实现详解 第一版.ppt" DWR(Direct Web Remoting)是一种JavaScript库,它允许Web应用程序实现服务器端与客户端之间的直接交互,使得开发者能够使用JavaScript直接调用Java方法,实现类似Ajax的效果,但更加便捷。在DWR中,这种双向通信机制包括了"反推"技术,也就是服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。腾讯QQ的在线和下线检测就是这种反推技术的一个应用实例。 要开始使用DWR,首先需要在项目中引入两个核心的JAR包:`commons-logging.jar` 和 `dwr.jar`。接下来,需要在`web.xml`配置文件中定义一个名为`dwr-invoker`的Servlet,这个Servlet负责处理DWR的请求。以下是一段示例配置: ```xml <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>activeReverseAjaxEnabled</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> ``` 这里,`debug`参数设置为`true`用于开启调试模式,`activeReverseAjaxEnabled`设为`true`则启用了反推功能。 此外,还需要在`WEB-INF`目录下创建一个名为`dwr.xml`的配置文件,用来定义允许客户端访问的服务器端对象和方法。虽然示例中没有提供具体的`dwr.xml`内容,但通常会包含以下结构: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD DirectWeb Remoting 2.0//EN" "dwr20.dtd"> <dwr> <!-- 配置允许客户端调用的Java类和方法 --> ... </dwr> ``` 在客户端网页中,需要引入DWR提供的JavaScript库,例如`util.js`, `engine.js` 和针对特定服务接口的文件,比如`PushService.js`。这些脚本文件提供了与DWR交互的API。 实现一对多的数据推送,可以通过DWR的`Broadcast`类来广播消息到多个连接的客户端。这在需要将同一消息发送给所有在线用户的情景下非常有用,如实时聊天室或通知系统。 一对一的数据推送则需要利用DWR的`ScriptSession`对象,它代表了浏览器与服务器之间的一个会话。通过识别特定的`ScriptSession`,服务器可以精确地向特定客户端发送数据。然而,需要注意的是,`ScriptSession`管理需要谨慎,因为如果不再使用,应及时清理,避免内存泄漏。 DWR技术简化了Web应用中的实时通信,尤其是反推技术的应用,极大地增强了用户体验。理解并熟练运用DWR的配置、接口调用以及数据推送机制,对于开发高效、实时的Web应用至关重要。