import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.util.Logger;
/**
* @author Joe Walker [joe at getahead dot ltd dot uk]
*/
public class JavascriptChat
{
/**
* @param text The new message text to add
*/
public void addMessage(String text)
{
if (text != null && text.trim().length() > 0)
{
messages.addFirst(new Message(text));
while (messages.size() > 10)
{
messages.removeLast();
}
}
WebContext wctx = WebContextFactory.get();
String currentPage = wctx.getCurrentPage();
ScriptBuffer script = new ScriptBuffer();
script.appendScript("receiveMessages(")
.appendData(messages)
.appendScript(");");
// Loop over all the users on the current page
Collection pages = wctx.getScriptSessionsByPage(currentPage);
for (Iterator it = pages.iterator(); it.hasNext();)
{
ScriptSession otherSession = (ScriptSession) it.next();
otherSession.addScript(script);
}
}
/**
* The current set of messages
*/
private LinkedList messages = new LinkedList();
/**
* The log stream
*/
protected static final Logger log = Logger.getLogger(JavascriptChat.class);
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Simple DWR Chat Version 2.0</title>
<script type='text/javascript' src='../dwr/engine.js'> </script>
<script type='text/javascript' src='../dwr/interface/JavascriptChat.js'> </script>
<script type='text/javascript' src='../dwr/util.js'> </script>
<script type="text/javascript" src='javascript-chat.js'> </script>
<link rel="stylesheet" type="text/css" href="../generic.css" />
</head>
<body onload="init()">
<div id="page-title">[
<a href="http://getahead.org/dwr/">DWR Website</a> |
<a href="..">Web Application Index</a>
]</div>
<h1>Javascript Chat</h1>
<p>This is a very simple chat demo that uses reverse ajax to collect messages
and Javascript to manipulate the pages with the results.</p>
<p>
Your Message:
<input id="text" onkeypress="dwr.util.onReturn(event, sendMessage)"/>
<input type="button" value="Send" onclick="sendMessage()"/>
</p>
<hr/>
<div id="chatlog"></div>
</body>
</html>
function init() {
dwr.engine.setActiveReverseAjax(true);
}
function sendMessage() {
var text = dwr.util.getValue("text");
dwr.util.setValue("text", "");
JavascriptChat.addMessage(text);
}
function receiveMessages(messages) {
var chatlog = "";
for (var data in messages) {
chatlog = "<div>" + dwr.util.escapeHtml(messages[data].text) + "</div>" + chatlog;
}
dwr.util.setValue("chatlog", chatlog, { escapeHtml:false });
}
分享到:
相关推荐
标题中的“dwr推技术官方实例”是指DWR提供的关于其推技术的实际操作示例,这些示例可能涵盖了DWR 2.0.4及以上版本的最新功能。由于高质量的实例资源在网络上可能不易找到,所以这份实例集合显得尤为宝贵。 描述中...
DWR的推技术则解决了这个问题,它允许服务器在数据更新时立即推送到客户端,从而实现更实时、更高效的用户体验。 DWR的工作原理是通过在服务器端创建一个Java对象,这个对象暴露了若干方法供客户端JavaScript调用。...
**基于DWR推送技术的聊天室** DWR(Direct Web Remoting)是一种JavaScript到Java的反向Ajax库,它允许Web应用在浏览器和服务器之间进行实时通信,从而实现动态、交互性强的Web应用。DWR的核心功能在于提供了一种...
DWR的主要功能之一是推送技术,这使得服务器可以主动向客户端发送数据,而不仅仅是响应客户端的请求。这种能力在创建实时更新的应用程序,如聊天应用,股票报价或者在线游戏时非常有用。 DWR推送技术的核心在于其...
【基于DWR推送的Web聊天系统】是一种利用Direct Web Remoting (DWR) 技术构建的实时交互式在线聊天应用。DWR是一款开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行直接通信,实现了AJAX(异步...
**DWR(Direct Web Remoting)技术详解及推技术实例** DWR,全称为Direct Web Remoting,是一种在Web应用程序中实现JavaScript与Java之间进行安全、高效通信的技术。它允许服务器端的Java代码直接调用客户端的...
在这个“dwr推技术简单案例”中,我们将深入理解DWR的核心概念,学习如何设置和使用DWR来实现实时数据推送。 首先,我们需要了解DWR的基本工作原理。DWR通过在浏览器和服务器之间建立一个持久连接,使得服务器可以...
DWR是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
- **推送技术**:DWR的推送功能是基于Comet模型,服务器端可以检测到某些事件后,立即向特定的客户端推送更新,无需客户端主动请求。 3. **pom.xml**: - 这个文件是Maven项目的配置文件,它定义了项目依赖关系,...
在"**dwr推送消息模板**"中,我们关注的是DWR如何实现服务器向客户端的实时消息推送。在传统的HTTP协议下,服务器无法主动向客户端推送信息,除非客户端发起新的请求。DWR通过一种称为"Reverse Ajax"或"Comet"的技术...
DWR的核心特性是它支持AJAX(Asynchronous JavaScript and XML)以及服务器推送技术,极大地提高了Web应用的用户体验。 **服务器推送技术**: 传统的HTTP协议是基于请求-响应模型的,即客户端发起请求,服务器响应...
**基于DWR的Java推送消息慕课小项目** 在IT行业中,实时通信是现代Web应用程序不可或缺的一部分,尤其是在构建互动性强、用户体验丰富的应用时。DWR(Direct Web Remoting)是一个开源框架,它允许JavaScript和Java...
5. **Session Management**:DWR能够识别和管理用户会话,这在推送技术中尤其重要,因为推送通常需要基于用户身份来定向消息。 6. **Error Handling**:正确处理错误是任何应用的关键,DWR也不例外。开发者需要配置...
在描述中提到的"DWR服务器推技术整合Struts2",意味着我们将DWR与流行的MVC框架Struts2相结合,以创建一个具有聊天功能的Web应用。Struts2提供了一个强大的架构来处理HTTP请求,并结合DWR,可以创建一个动态的、交互...
标题 "dwr推模式" 涉及到的是Direct Web Remoting (DWR) 技术的一种工作模式,主要用于Web应用程序中的实时数据交互。DWR允许JavaScript与服务器端的Java代码进行交互,提供了异步更新页面的能力,极大地提高了用户...
在本项目"基于DWR框架的Web推送技术实现"中,我们将探讨如何利用DWR框架来构建一个实时的Web聊天程序。 首先,理解DWR框架的核心概念是至关重要的。DWR允许开发者在浏览器中直接调用服务器上的Java方法,就像它们是...
在“dwr推技术反转聊天事例”中,我们将探讨DWR如何用于构建一个实时的聊天应用程序,并分析其中的关键知识点。 首先,我们需要理解DWR的核心概念。DWR允许JavaScript在浏览器端直接调用服务器端的Java方法,而无需...
### DWR的推技术详解 #### 一、DWR推技术概述 DWR(Direct Web Remoting)是一种简化Ajax开发的框架,它允许Java对象直接与JavaScript交互,从而实现更流畅的网页应用体验。在DWR 2.x版本中,引入了推技术,即所谓...
然而,DWR通过建立一个持久的连接,使得服务器可以主动地向客户端推送数据,从而提高了用户体验。 DWR的核心功能包括: 1. **远程方法调用(Remote Method Invocation, RMI)**:DWR允许JavaScript直接调用服务器...
在本项目的背景下,由于HTML5的WebSocket不适用于所有浏览器,特别是对旧版IE的支持,因此选择了DWR作为实现推送技术的工具。DWR的核心思想是建立一个持久的连接(long-polling)来实现实时数据推送。这种机制下,...