所谓反向ajax是指服务器端通过一系列API来控制浏览器端元素,实际上反向控制只是一种形象的说法,能够操作浏览器页面元素的只能是客户端脚本,只是在服务器端加入一系列操作客户端元素的API这样问题就解决了
既然要实现反向ajax,首先要设置反向ajax的参数,在web.xml中设置参数
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
客户端页面在加载的时候需要指定
<body onload="dwr.engine.setActiveReverseAjax(true);">
完整代码如下,客户端页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>利用反向ajax实现页面聊天</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="dwr/interface/DWRHelper.js"></script>
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript">
function sendMessage(){
DWRHelper.addMessage(dwr.util.getValue("myText"));
}
</script>
</head>
<body onload="dwr.engine.setActiveReverseAjax(true);">
<input type="text" id="myText" />
<input type="button" value="发送" onclick="sendMessage()" />
<div style="width: 300px; height: 300px; border: 1px solid blue">
<ul id="chatlog"></ul>
</div>
</body>
</html>
src="dwr/interface/DWRHelper.js"中的DWRHelper必须与DWRHelper.addMessage(...)名称必须相一致
服务器端代码如下
package com.lamp;
import java.util.Collection;
import java.util.LinkedList;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
public class DWRHelper {
LinkedList<Message> messages = new LinkedList<Message>();
public void addMessage(String text) {
if (text.trim().length() > 0 || text != null) {
messages.addFirst(new Message(text));
while (messages.size() > 10) {
messages.removeLast();
}
}
System.out.println(text);
WebContext context = WebContextFactory.get(); // 获得容器上下问
String currentPage = context.getCurrentPage(); // 获得当前页面
Util util = new Util(context.getScriptSession());
util.setValue("myText", ""); // 清空当前编辑框
Collection sessions = context.getScriptSessionsByPage(currentPage); // 打开当前页面的所有会话集合
Util utilAll = new Util(sessions);
utilAll.removeAllOptions("chatlog"); //清空原来列表的内容
utilAll.addOptions("chatlog", messages, "text"); //将消息显示在列表中
}
}
bean类Message如下
package com.lamp;
public class Message {
private String text;
public Message() {
}
public Message(String text) {
this.text = text;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
dwr.xml需设置为
<create javascript="DWRHelper" creator="new"
scope="application">
<param name="class" value="com.lamp.DWRHelper"></param>
</create>
<convert match="com.lamp.Message" converter="bean">
<param name="include" value="id,text"></param>
</convert>
分享到:
相关推荐
dwr实现的在线即时聊天demo,比较简化的一个反向ajax例子, <br>everse Ajax主要是在BS架构中,从服务器端向多个浏览器主动推数据的一种技术。它的一种实现就是客户端向服务器请求后,服务器不立即回应,从而导致一...
本文将围绕一个基于Java的反向Ajax聊天实例——"反向Ajax聊天简单例子"进行详细解析。 1. 反向Ajax原理: 反向Ajax的核心思想是通过持久连接(Persistent Connection)或轮询(Polling)等技术,使服务器能够在有...
Direct Web Remoting (DWR) 是一个开源Java库,它允许在浏览器和服务器之间进行安全、高效的异步通信,即所谓的“反向AJAX”或“Comet”技术。DWR使得JavaScript能够调用服务器端的Java方法,就像它们是本地函数一样...
4. **反向AJAX(Reverse AJAX)**:DWR实现了反向AJAX,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。 接下来,我们将探讨如何使用DWR进行基本操作: 1. **创建Java类**:首先,我们需要在...
- **反向AJAX**:DWR的核心技术就是反向AJAX,即由服务器主动向浏览器发送数据,而不是等待用户触发请求。 - **Remote Object**:DWR将服务器端的Java对象映射为JavaScript对象,使得在JavaScript中可以直接调用...
- **配置web.xml**:在web.xml中添加DWR的Servlet配置,启用调试模式,并设置主动反向Ajax。 4. **运行与测试**: - 创建HTML或JSP页面,使用JavaScript调用SayHello.SayHelloByName()方法,传递参数并接收返回值...
这个过程被称为“反向Ajax”或“服务器推送”,它能够实现在不依赖用户操作的情况下,服务器主动向客户端发送数据。 DWR的核心组件包括几个部分: 1. **Engine**:这是DWR的核心,负责处理JavaScript到Java的转换和...
1. **反向Ajax**:DWR实现了从客户端到服务器的异步通信,即JavaScript可以调用服务器端的Java方法,而无需页面刷新。这对于创建富互联网应用程序(RIA)非常有用,因为它提供了更流畅的用户体验。 2. **自动序列化...
1. **反向Ajax(Reverse Ajax)**:DWR通过在后台运行的Java对象与前端JavaScript代码之间建立桥梁,实现了双向通信。这使得Web应用可以实现类似桌面应用的实时交互效果,如即时更新数据、无刷新操作等。 2. **自动...
综上所述,这个Web聊天室项目涵盖了从客户端到服务器端的完整实时通信流程,是学习和实践Ajax反向推送技术的一个好例子。通过深入研究和理解这个源码,开发者可以掌握如何在实际项目中应用Server Push,提高Web应用...
- **反向AJAX**: DWR的核心理念是反向AJAX,即由服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。 - **Engine**: DWR Engine是处理所有AJAX请求的核心组件,负责映射和执行远程方法。 - **允许列表**: ...
3. **Reverse AJAX**:DWR实现了反向AJAX,即服务器主动推送数据到客户端。这对于实时应用(如聊天室、股票报价)非常有用。 4. **AutoComplete**:DWR提供了自动完成功能,用于在输入框中实现下拉提示,提高用户...
1. **反向AJAX(Reverse AJAX)**: DWR允许JavaScript代码在用户浏览器上直接调用服务器端的Java方法,就像调用本地函数一样,这使得Web应用能够实现即时响应和动态更新。 2. **自动类型转换**: DWR自动处理了Java...
1. **反向Ajax**:DWR允许服务器端代码直接调用客户端的JavaScript函数,实现了双向通信,这是Ajax技术的核心特性之一。 2. **自动类型转换**:DWR自动处理Java对象与JavaScript对象之间的类型转换,减轻了开发者的...
- **反向AJAX**: DWR的核心功能是实现反向AJAX,即由服务器向客户端推送数据,而不仅仅是客户端向服务器发送请求。 - **映射机制**: DWR通过XML配置或注解方式,将服务器端的Java类和方法映射到JavaScript接口上,...
1. **反向Ajax**:DWR的核心是反向Ajax,即服务器主动向客户端推送数据,而不是等待客户端发起请求。这种技术使得实时性成为可能,例如实时聊天应用、股票报价等。 2. **安全机制**:DWR提供了安全机制,如CSRF...
在"**dwr反推简单例子**"中,我们将会探讨如何使用DWR进行数据的反向推送,即由服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。 首先,DWR的核心概念包括三个主要部分:`Engine`、`Configuration`和`...
1. **反向Ajax(Reverse Ajax)**:传统的Ajax是客户端发起请求,服务器响应。而DWR允许服务器主动推送数据到客户端,这种反向的模式在实时应用中特别有用,如聊天室或股票报价。 2. **Java对象到JavaScript对象的...
DWR的核心在于它的反向Ajax机制,即服务器可以主动向客户端发送数据,而不仅仅是响应客户端的请求。它通过创建一个持久的HTTP连接,使得通信过程更加高效。在DWR中,Java对象被暴露为JavaScript接口,这样JavaScript...
本文将深入探讨如何设置 AJAX 请求的超时,并解决一个具体的例子——一个 AJAX action 被执行了两遍的问题。 首先,我们需要了解 AJAX 请求的超时是在客户端设置的,通常通过 JavaScript 的 jQuery 库来实现。在 ...