日前在做一个商城系统,甲方要求在客户下订单时,能够实时通知到在线客服所在的管理页面,于是想到用dwr的push来实现。由于之前没用过,写了一个例子。如下:
本例采用Eclipse+JDK1.5+DWR2.0M2+Tomcat5.028开发
管理员端,负责接受消息。
demo1.html
<html>
<HEAD>
<TITLE>管理订单</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/dwr/util.js'></script>
<script language="javascript">
function init()
{
dwr.engine.setActiveReverseAjax(true);
}
function receiveMessages(id)
{
document.all.div_area.innerHTML="产生新订单:"+id;
}
</script>
</HEAD>
<body onload="init();">
<div id="div_area">
目前没有订单
</div>
</body>
</html>
模拟下定单
demo.html
<html>
<HEAD>
<TITLE>下订单</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type='text/javascript' src='/dwr/interface/Remote.js'></script>
<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/dwr/util.js'></script>
<script language="javascript">
function doRemote()
{
Remote.getData();//模拟下订单
}
</script>
</HEAD>
<body>
<input type="text" name="name" />
<input type="text" name="order" />
<input type="button" value="提交" onClick="doRemote();">
</body>
</html>
Remote.java //订单处理
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
public class Remote {
public void getData(HttpServletRequest request)
{
this.noticeNewOrder("JISOD001003");//发送订单号
}
public void noticeNewOrder(String id)
{
WebContext wctx = WebContextFactory.get();
String currentPage = "/demo1.html";
ScriptBuffer script = new ScriptBuffer();
script.appendScript("receiveMessages(").appendData(id).appendScript(");");
Collection pages = wctx.getScriptSessionsByPage(currentPage);
for (Iterator it = pages.iterator(); it.hasNext();)
{
ScriptSession otherSession = (ScriptSession) it.next();
otherSession.addScript(script);
}
}
}
dwr配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="Remote">
<param name="class" value="com.Remote" />
<include method="noticeNewOrder" />
<include method="getData" />
</create>
</allow>
</dwr>
经调试可以成功,但是响应比较慢,从点击下订单,到管理页面显示下单消息,会经过差不多一分钟的时间,不知道是为什么,使用Tomcat6的NIO也是如此。
分享到:
- 2008-01-14 11:53
- 浏览 2996
- 评论(7)
- 论坛回复 / 浏览 (7 / 9551)
- 查看更多
相关推荐
这个方法会将消息广播到所有已建立的DWR会话,确保所有在线用户都能立即接收到最新的信息。 半推(Half Push),也称为请求响应推送,是在用户触发特定事件时,服务器仅向特定客户端推送更新。这种方式在处理用户...
- **事件处理**:在客户端,通常会有一个事件监听器来捕获来自DWR的推送消息,并在界面上显示新消息。 - **用户认证与会话管理**:为了保证安全性,聊天应用通常需要用户认证。DWR可以集成Spring Security等框架进行...
在本项目"jsp DWR框架推模式实现的聊天室"中,我们将探讨如何利用DWR的推送(Push)模式来构建一个实时的在线聊天应用。** 首先,我们需要了解DWR的基本工作原理。DWR通过在浏览器和服务器之间建立一个持久连接,...
这是,以上两个版本的升级版,在原有的基础上,增加了 清空聊天记录,上线通知,用户id,及登录的所在地(ip),聊天信息可选择颜色, ps: 测试的时候记得将 info.txt(聊天信息保存文件) 绝对路径覆盖源码中,以前的路径,
在描述中提到的案例是一个使用DWR构建的广播或群聊系统。DWR的实时更新能力使其非常适合用于构建这样的系统。通过DWR的Push技术,服务器可以主动向客户端推送消息,而不仅仅是响应客户端的请求。这种模式在群聊系统...
【标题】: 使用DWR的Comet推送技术创建多人聊天室 【描述】: 本文主要探讨如何通过Spring与Direct Web Remoting (DWR)框架的整合,利用Comet技术来构建一个无需刷新页面的多人在线聊天室。Comet是一种实现服务器到...
7. **JavaScript编程**: 在前端,你需要使用DWR提供的API来调用服务器端的方法,处理接收和发送聊天消息,以及显示在用户界面上。 8. **安全性考虑**: 由于DWR允许直接的跨域调用,因此需要考虑防止XSS和CSRF攻击。...
在DWR的帮助下,服务器可以广播消息到所有在线的聊天室成员,实现即时通信。 【标签】"推技术"指的是服务器主动向客户端推送信息的技术,而非客户端轮询请求。DWR支持这种推送模式,可以显著提升用户体验,因为用户...
在本文中,我们将探讨如何使用DWR实现前台监控并进行后台即时信息推送。 首先,理解DWR的工作原理至关重要。DWR通过在服务器端运行一个Servlet,这个Servlet负责接收JavaScript的请求,执行相应的Java方法,然后将...
通过以上分析,我们可以看出"Dwr推送技术实现BS即时通讯"这个项目涉及到了前端与后端的交互、即时通讯机制、数据存储和安全等多个方面的技术,是一个综合性的Web应用开发实践。通过学习和理解这个项目,开发者可以...
同时,DWR还提供了事件监听机制,用于接收服务器推送的消息,实现实时更新聊天界面。 4. **后端实现** 在服务器端,我们需要创建一个处理聊天逻辑的Java类。这个类可能包括添加新消息到聊天记录、广播消息给所有...
DWR通过建立持久化的连接(如Comet技术)来实现"推",当服务器端有新的聊天消息或广播信息时,能够立即传递到所有在线用户。 在这个系统中,聊天信息被加密后再存储在本地的TXT文件中。使用DES(Data Encryption ...
总结,通过这个简单的DWR聊天室实例,我们可以了解到DWR在实现动态Web应用中的重要作用,以及如何使用DWR来构建实时交互的Web系统。对于希望提升Web开发技能的开发者来说,深入学习DWR是一个值得投入的方向。
在这个项目中,我们关注的是如何使用DWR(Direct Web Remoting)框架来实现一个无需数据库支持的实时在线聊天应用,包括私聊和群聊功能。DWR是一种在浏览器和服务器之间进行实时通信的技术,它允许JavaScript与Java...
4. **即时显示**:当接收者打开聊天窗口时,JavaScript通过DWR定期轮询或者使用长轮询(Long Polling)机制检查新消息,一旦发现新消息,就会立即在页面上显示。 5. **界面交互**:使用jsp页面实现用户界面,包括...
在这个"Dwr推数据Demo"中,我们看到的是一个基于DWR技术实现的多人聊天室。这个应用展示了如何利用DWR的实时双向通信能力来推送数据到客户端,从而实现聊天室的功能。 首先,让我们深入理解DWR的工作原理。DWR通过...
- **服务器端**:使用DWR的半推功能,服务器端监听新的聊天消息,并将它们推送给已建立连接的客户端。 - **客户端**:通过JavaScript与服务器建立长连接,接收服务器推送的消息,并实时更新聊天窗口。 6. **性能...
广播通常是通过DWR的推送功能实现的。 4. **实时更新**:当客户端接收到新消息的推送,JavaScript更新页面显示,将新消息添加到聊天记录中。 **安全与优化** 1. **安全性**:使用DWR时,需要注意防止跨站脚本攻击...
在"**dwr反推简单例子**"中,我们将会探讨如何使用DWR进行数据的反向推送,即由服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。 首先,DWR的核心概念包括三个主要部分:`Engine`、`Configuration`和`...
在聊天室的实现过程中,通常会有一个服务器端的组件(可能是由 DWR 提供的)来处理用户的登录、消息存储和广播。一旦用户成功登录,DWR 将在后台运行,监听来自客户端的消息并将其推送给其他在线用户。同时,SSH 会...