使用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币余额
- 我的收藏
- 我的下载
- 下载帮助