后台java
import java.util.Collection;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.ServerContext;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
public void newMessage(String message) {
WebContext wctx = WebContextFactory.get();
ScriptBuffer script = new ScriptBuffer();
script.appendScript("receiveMessages(").appendData(message).appendScript(");");
ServerContext sctx = ServerContextFactory.get(wctx.getServletContext());
Collection pages = sctx.getScriptSessionsByPage("/YGO/room.jsp");
for (Object session : pages) {
((ScriptSession)session).addScript(script);
}
}
web.xml
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<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>
<load-on-startup>1</load-on-startup>
-->
</servlet>
第一个 servlet init-param,activeReverseAjaxEnabled 将激活轮询和 Comet 功能。(省略:第二个 initApplicationScopeCreatorsAtStartup 通知 DWR 在应用程序启动时初始化 ReverseAjaxTracker。这将在对 bean 生成第一个请求时改写延迟初始化(lazy initialization)的常规行为 —— 在本例中这是必须的,因为客户机不会主动对 ReverseAjaxTracker 调用方法。)
最后,我需要实现调用自 DWR 的客户端 JavaScript 函数。将向回调函数 —— updateCoordinate() —— 传递 GpsCoord Java bean 的 JSON 表示,由 DWR 的 BeanConverter 自动序列化。该函数将从坐标中提取 longitude 和 latitude 字段,并通过调用 Document Object Model (DOM) 将它们附加到列表中。清单 13 展示了这一过程,以及页面的 onload 函数。onload 包含对 dwr.engine.setActiveReverseAjax(true) 的调用,将通知 DWR 打开与服务器的持久连接并等待回调。
前台jsp
window.onload = function() {
dwr.engine.setActiveReverseAjax(true);
}
function receiveMessages(message) {
document.getElementById('chatcontent').innerHTML = document.getElementById('chatcontent').innerHTML + message + "<br/>";
}
分享到:
相关推荐
即时通讯DWR Reverse Ajax
dwr reverseajax clockms
dwr reverseajax ClockLogging
Server Side Reverse Ajax Clock
实现一个简单的Web版的聊天功能,Java使用开源框架最新版本的dwr3,包括相应的JSP页面的实现。
两个例子reverse ajax的实现 博文链接:https://yaojialing.iteye.com/blog/716094
DWR2.x的推技术也叫DWR Reverse Ajax(逆向Ajax)主要是在BS架构中,从服务器端向多个浏览器主动推数据的一种技术。
NULL 博文链接:https://ping2010.iteye.com/blog/1680406
功能描述:模拟一个聊天室程序 comet.jsp就是聊天室接收消息的界面,action.jsp就是发送消息的界面,为了更好的说明问题,将接收界面和发送界面放在两个窗口中, 测试时同时可以打开多个接收界面和发送界面, ...
服务器推--DWR中的push机制-Reverse_Ajax.docx
dwr 与ssh整合开发的web 聊天系统,采用了dwr3 的reverse ajax 以及服务器推送技术。自带源码和jar包
原理: FileUpload实现上传功能, UploadListener 监听上传进度, DWR push (Reverse Ajax) 进度信息并更新页面, 实现无刷新多文件上传 运行环境: Tomcat 5/6 测试通过 说明:累计上传文件不超过10M(可以更改...
实现服务器的数据推送,有例子。本人测试,通过
DWR is a RPC library which makes it easy to call Java functions from JavaScript and to call JavaScript functions from Java (a.k.a Reverse Ajax).
dwr的反转ajax,实现服务器推送数据。
dwr3.0 包括noncla,支持Reverse Ajax反推,包括noncla支持JSF,SPRING集成。
如果你还是停留在原来的ajax层面的话,这次绝对...DWR出2.0版了,其中最大的亮点就是Reverse Ajax技术!传统的浏览器发起请求服务器返回响应,而现在通过反向ajax可以由服务器向浏览器发响应但是不需要浏览器提供请求。...
dwr实现的在线即时聊天demo,比较简化的一个反向ajax例子, <br>everse Ajax主要是在BS架构中,从服务器端向多个浏览器主动推数据的一种技术。它的一种实现就是客户端向服务器请求后,服务器不立即回应,从而导致一...
个人亲身体验,感悟web开发之旅,迫于开发需求,通过较为理性的分析,探讨出开发框架STURTS+SPRING+[HIBERNET|JPA]+DWR+EXTJS的组合,并给出这一框架选取中实验的开发例子,其中包括dwr的ajax及reverseajax、extjs的...
Reverse Ajax 123 Rico (Ajax) 124 Seed (programming) 126 Server-side JavaScript 129 Comparison of Server-side JavaScript solutions 130 SproutCore 135 Unobtrusive JavaScript 136 Venkman 139 ...