使用dwr2.0实现服务器推客户端
在本文中,我们将深入探讨如何使用Direct Web Remoting (DWR) 2.0来实现服务器推技术,以便实时地将信息传递给客户端。DWR是一个JavaScript库,它允许Web应用进行异步通信,实现类似Ajax的效果,但支持服务器向客户端推送数据。结合响应式Socket服务器推消息,我们可以构建一个更高效、实时的Web应用程序。 我们需要在`web.xml`配置文件中设置DWR的相关组件。这是DWR工作流程的核心部分,因为它定义了所有必需的过滤器和servlet映射。以下是一些关键配置: 1. **字符编码过滤器**:通过`<filter>`元素定义了`SetCharacterEncodingFilter`,确保所有请求都使用UTF-8编码,避免字符集问题。 2. **ActionContextCleanUp Filter**:这是Struts2框架的一部分,用于清理ActionContext,保证每个请求的上下文独立,避免数据污染。 3. **Sitemesh Filter**:Sitemesh是一个页面布局框架,用于统一网站的样式和结构。这里使用`PageFilter`集成Sitemesh,使DWR请求也能被装饰。 4. **Struts2 Filter**:`FilterDispatcher`是Struts2的核心过滤器,处理所有基于Struts2的请求。 5. **SessionInactivityFilter**:这个过滤器负责检测会话超时,如果用户在设定时间内无操作,会将他们重定向到指定的错误页面。 6. **Session配置**:通过`<session-config>`定义了会话超时时间为120秒,也就是2分钟。 7. 对于每个过滤器,我们还需要配置相应的`<filter-mapping>`,指定这些过滤器应该在哪些URL模式下生效。 接下来,我们需要在DWR配置文件(通常为`dwr.xml`)中声明允许的远程方法。这些方法可以被JavaScript调用,并且当服务器有新数据时,DWR可以自动调用这些方法将数据推送到客户端。例如: ```xml <dwr> <allow> <create creator="new" javascript="ServerPushService"> <param name="class" value="com.example.ServerPushServiceImpl"/> </create> </allow> </dwr> ``` 在上面的例子中,我们创建了一个名为`ServerPushService`的JavaScript对象,它与服务器端的`com.example.ServerPushServiceImpl`类对应。这个服务类应包含一个或多个方法,用于接收和处理服务器推送的数据。 在服务器端,你需要实现一个监听器或者定时任务,当有新的消息时,调用DWR允许的远程方法,将数据推送给客户端。例如: ```java public class ServerPushServiceImpl { @RemoteMethod public void pushNewMessage(String message) { // 这个方法会被DWR自动调用,将消息传递给所有已连接的客户端 } } ``` 在客户端,你可以使用DWR的API注册一个回调函数,当服务器调用`pushNewMessage`时,这个函数会被执行,显示接收到的消息: ```javascript var ServerPushService = DWRUtil.createProxy('ServerPushService'); ServerPushService.pushNewMessage = function(message) { // 更新DOM或者其他操作来显示消息 }; ``` 至此,我们就完成了DWR 2.0结合响应式Socket服务器推消息的基本配置。这个机制允许服务器主动地向客户端发送更新,而不是等待客户端的请求,提高了Web应用的实时性。然而,需要注意的是,长时间打开的连接可能会消耗大量服务器资源,因此在设计时需要考虑如何有效地管理和优化这些连接。此外,DWR 2.0已有些许过时,现在可能更多地使用WebSocket或其他现代推送技术来实现服务器推送。
剩余14页未读,继续阅读
- guo982012-11-22还好吧,入门够了!
- 朵朵粑2011-11-08例子有点复杂。。。有没有最基本的小例子。比如执行一个java方法后在页面上alert个东西出来。谢谢
- 粉丝: 0
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 東耳篮球馆会员信息管理系统(编号:98721117).zip
- 房屋系统(编号:45266146).zip
- 大学生志愿者信息管理系统(编号:96654262).zip
- 房屋租赁系统(编号:49930163).zip
- 付费自习室管理系统(编号:46724236)(1).zip
- 学术论文撰写技巧:施一公提高英文论文写作能力的六点建议
- 科研真问题从何而来-中科院院士分享
- 通过matlab语言读取csv文件.zip
- 通过Django实现用户注册和登录的简单认证系统.zip
- 通过汇编语言计算两个整数和,将结果存储在另一个变量中.zip
- Aruba%20Instant%20On_2.3.0_apk-dl.com.apk.1.1
- Ruby参考手册中文CHM版最新版本
- RubyonRails字符串处理中文最新版本
- 基于 selenium 模拟微博登录爬虫资料齐全+详细文档+源码.zip
- 基于chromeDriver+selenium蓝桥杯题库爬虫资料齐全+详细文档+源码.zip
- 基于java+selenium爬虫资料齐全+详细文档+源码.zip