DWR技术详解:JavaScript与后台交互及反推应用
需积分: 3 98 浏览量
更新于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应用至关重要。
2011-01-14 上传
2011-03-25 上传
2009-04-14 上传
2008-04-27 上传
125 浏览量
2009-12-01 上传
2009-06-02 上传
2023-09-19 上传
2024-01-03 上传
ysg820
- 粉丝: 0
- 资源: 5
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码