`
a3mao
  • 浏览: 562997 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DWR的推送

    博客分类:
  • Work
阅读更多
项目中有个需求,把服务器端一些操作都输出到页面上显示,类似一个日志功能的操作.针对这样的需求,我反复想想,还是觉得用服务器的推送技术比较好,正好看到网上有人用dwr实现了这个功能,因此我也尝试着做了下.呵呵,成绩斐然啊,不过不算完全满意,有些东西没想明白怎么回事.
我用struts2+spring+hibernate,ajax库用的jquery,发现jquery跟dwr的util.js冲突,不知道如何使用dwr的util.js.
首先,在web.xml中配置dwr(dwr版本为version: 2.0.3):
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<description>false</description>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>AJAX</description>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>100</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

然后,写struts2的action类:
public class BaseAction extends ActionSupport implements ServletContextAware,java.io.Serializable
    {
    protected ServletContext servletContext;
   
    public void setServletContext(ServletContext arg0)
    {
   this.servletContext = arg0;
}
public void outMessage(String msg)
{
    ServerContext wctx = ServerContextFactory.get(this.servletContext);
ScriptSession scriptSessions = null;
Collection<ScriptSession> sessions = wctx.getAllScriptSessions ();

msg = MessageUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss") + " \t"+ msg;
ScriptBuffer script = new ScriptBuffer();
script.appendScript("showMessage(")
.appendData(msg)
.appendScript(");");

for (ScriptSession session : sessions) {
session.addScript(script);

}
}
然后,注册action到spring中:
<bean id="baseAction" class="com.fsc.frame.base.web.BaseAction" />

然后,注册dwr.xml文件:
<allow>
<create creator="spring" javascript="Msg">
<param name="beanName" value="baseAction"/>
</create>
    </allow>

然后就是写页面,即将服务器消息推送到页面上:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<table CLASS="body_bottom" width="98%" align="center">
  <tr>
    <td width="95%">   
      <textarea rows='5' id="message" name="STATUS_MESSAGE" ReadOnly style="width:100%" class="CSS_TextArea"></textarea>
    </td>
  </tr>
</table>   
<script type='text/javascript' src='dwr/interface/Msg.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript'>

/**
* 页面初始化
*/
function init()
{
  dwr.engine.setActiveReverseAjax(true); // 激活反转 重要
}

window.onload = init;//页面加载完毕后执行初始化方法init

function showMessage(msg)
{
var htmlMsg =  $("#message").val() + msg + "\n";
$("#message").val(htmlMsg);
document.all.STATUS_MESSAGE.scrollTop = document.all.STATUS_MESSAGE.scrollHeight;
}
</script>

这样一个完整的应用就完成了.
需要注意的是,在action里输出到页面上的script方法必须要先在页面上进行定义.

问题:
    1.
    Collection<ScriptSession> sessions = new HashSet<ScriptSession>();
    sessions.addAll(ServerContextFactory.get(this.servletContext).getScriptSessionsByPage("/framework/footer.jsp"));
为啥这么写得不到页面session呢?那位知道麻烦说下.
2. 如何才能避免jquery跟dwr的util.js的冲突?
分享到:
评论
3 楼 zhongyangjian 2013-02-18  
我这也有这样的需求,就是从EXCEL批导入数据到数据库时,要实时显示导入的操作日志,博主能跟我分享下你的设计思路么,我是觉得是不是要实时读取Log打印好的日志文件呢?能跟我说下么,谢谢
2 楼 chunanyong 2009-03-13  
$ 符号是jquery和 dwr冲突的原因 你查下 jquery 的文档,里面有个解决的办法,就是jquery 不再使用 $ 符号 用  jQuery 代替,这样可能会影响 你的jquery 插件
1 楼 gujin2006 2008-11-24  
兄弟,我遇到了你第一个问题,估计是Struts的原因,但是还没找到解决的办法。你解决了吗?

相关推荐

    DWR推送技术大全 dwr推送聊天实例

    DWR推送技术的实现主要涉及以下几个关键组件: 1. **DWR Engine**:这是DWR的核心部分,负责处理JavaScript与服务器端Java对象之间的交互。它通过AJAX(Asynchronous JavaScript and XML)技术在客户端和服务器之间...

    dwr推送及js访问java代码

    在“dwr推送及js访问java代码”的项目中,我们可以看到如何利用DWR进行双向通信。首先,DWR的核心组件包括`DWR Engine`、`Servlet`和`AutoBean`等。`DWR Engine`负责在客户端和服务器之间建立连接,`Servlet`处理...

    dwr推送技术

    在实际项目中,根据`dwrpush`这个文件名,我们可以推测这是一个关于DWR推送技术的示例或配置文件,可能包含了如何设置和使用DWR推送功能的代码示例。通过对这个文件的深入学习和实践,可以更好地理解和掌握DWR3的推...

    dwr推送demo,用户互推、服务器推送,

    在这个名为“dwr推送demo”的项目中,开发者提供了一个适合初学者理解DWR推送功能的实例。 DWR的核心特性在于它的Ajax(异步JavaScript和XML)支持,它允许JavaScript直接调用服务器端的Java方法,而无需传统的HTTP...

    Dwr 推送简单列子

    在“Dwr 推送简单列子”这个项目中,我们看到它是一个可以运行的示例,用于展示DWR的推送功能。推送技术是DWR的一个重要特性,它允许服务器主动将数据推送到客户端,而不是传统的客户端请求-服务器响应模式。这种...

    dwr 推送例子,CHAT

    这两个文件展示了DWR推送的两种不同实现方式。 1. `java-chat.html`:这个例子中,服务器端负责主动推送消息到客户端。在Java后端,开发者需要创建一个`PushEngine`实例,注册监听器,并在有新消息时触发推送。DWR...

    DWR推送功能实现实例(前段,后台函数互调)

    在"**DWR推送功能实现实例(前段,后台函数互调)**"中,我们将深入探讨如何利用DWR来实现实时的双向通信。 **DWR的基本原理**: DWR的核心是通过动态生成JavaScript库,使JavaScript可以直接调用Java对象的方法。...

    接收Socket消息通过DWR推送到界面显示

    标题中的“接收Socket消息通过DWR推送到界面显示”涉及两个关键技术和概念:Socket通信和Direct Web Remoting(DWR)框架。 1. **Socket通信**:Socket是网络编程的基本接口,它允许应用程序通过网络进行双向通信。...

    基于dwr推送技术的聊天室

    **基于DWR推送技术的聊天室** DWR(Direct Web Remoting)是一种JavaScript到Java的反向Ajax库,它允许Web应用在浏览器和服务器之间进行实时通信,从而实现动态、交互性强的Web应用。DWR的核心功能在于提供了一种...

    dwr推送消息

    在这个"**dwr推送消息**"的场景中,我们看到的是DWR被用来实现一个消息推送系统,通过后台消息队列(MQ)监听,一旦接收到新消息,便即时推送到前端进行展示。 首先,我们需要理解DWR的核心概念。DWR提供了几个关键...

    dwr推送例子

    通常,一个简单的DWR推送示例会包括以下组件: 1. **DWR Engine**:这是DWR的核心组件,负责处理JavaScript与Java之间的通信。在服务器端,你需要在web.xml中配置DWR Engine,指定允许访问的类和方法。 2. **...

    dwr推送消息模板

    在"**dwr推送消息模板**"中,我们关注的是DWR如何实现服务器向客户端的实时消息推送。在传统的HTTP协议下,服务器无法主动向客户端推送信息,除非客户端发起新的请求。DWR通过一种称为"Reverse Ajax"或"Comet"的技术...

    DWR推送技术

    - 实时数据显示:服务器端定期更新数据,通过DWR推送至客户端显示图表或仪表盘。 - 表单验证:在客户端提交表单前,通过DWR调用服务器端的验证方法。 综上所述,DWR是一个强大的工具,能够简化Web应用的开发,...

    dwr推送jar包

    dwr推送jar包 DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,...

    基于DWR推送的web聊天系统

    【基于DWR推送的Web聊天系统】是一种利用Direct Web Remoting (DWR) 技术构建的实时交互式在线聊天应用。DWR是一款开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行直接通信,实现了AJAX(异步...

    Dwr推送技术实现BS即时通讯

    通过以上分析,我们可以看出"Dwr推送技术实现BS即时通讯"这个项目涉及到了前端与后端的交互、即时通讯机制、数据存储和安全等多个方面的技术,是一个综合性的Web应用开发实践。通过学习和理解这个项目,开发者可以...

    使用dwr+spring实现消息推送

    总的来说,结合DWR和Spring,我们可以构建出一个高效、可扩展的消息推送系统,使得Web应用能够实时地与用户互动,提升用户体验。在实际项目中,还需要考虑安全性、错误处理、性能监控等方面,确保系统的稳定性和可靠...

    dwr推技术实现服务器推送数据

    总结来说,DWR推技术是实现服务器主动向客户端推送数据的一种高效方式,尤其适用于需要实时数据更新的应用,如股票实时显示。通过反转Ajax,DWR简化了开发流程,提高了用户体验,是现代Web开发中的一个重要工具。

    dwr+spring实现后台向前台推送实例

    本实例是在一些网络资料的基础上整合出来的一个:以后台向前台页面推送消息的一个完整实例工程,采用了spring、dwr反转,实现的是后台向前台不断推送消息,并管理相关用户退出;可以用在如定时任务的桌面消息提醒之...

Global site tag (gtag.js) - Google Analytics