第一步:最基本也是最重要的,要记得配置web.xml中与reverse ajax相关的参数。
<init-param>
<description>是否激活反向Ajax</description>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
可增加额外的两个参数:
<init-param>
<description>在WEB启动时是否创建范围为application的creator</description>
<param-name>initApplicationScopeCreatorsAtStartup</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
第二步:编写Java
的时钟代码:
package learn.dwr.reverse;
import java.util.Date;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.directwebremoting.Browser;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.ui.dwr.Util;
/**
* title: 时钟
*
* @author Administrator
* @时间 2009-11-21:下午07:11:56
*/
public class MyClock implements Runnable {
// 这个active必需用static,使用transient标识是无法使用哦。
protected static boolean active = false;
public MyClock() {
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(
1);
executor.scheduleAtFixedRate(this, 1, 1, TimeUnit.SECONDS);
}
@Override
public void run() {
if (active) {
setClockDisplay((new Date()).toString());
}
}
public synchronized void toggle() {
active = !active;
if (active) {
setClockDisplay("Started");
} else {
setClockDisplay("Stopped");
}
}
public void setClockDisplay(final String output) {
String page = ServerContextFactory.get().getContextPath()
+ "/reverseajax/clock.html";
System.out.println(page + " " + output);
Browser.withPage(page, new Runnable() {
public void run() {
Util.setValue("clockDisplay", output);
}
});
}
}
第三步:把MyClock类配置到dwr.xml中内容如下:
<create creator="new">
<param name="class" value="learn.dwr.reverse.MyClock" />
</create>
注意:
creator
=
"new"
,每当我们点击“Start/Stop
”按钮时,它会自动生成一个新的Clock
对象,此时我们应该把设置范围,
scope
=
"application"
,用
application
范围时,它就不会再每次点击“
Start/Stop
”时创建新的
Clock
对象,因为
Clock
对象,只有应用程序启动时创建一个Clock对象。
第四步:创建/reverseajax/clock.html语言件,并编写HTML代码,其内容如下:
<!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=utf-8" />
<title>Reverse ajax 时钟案例</title>
<script type='text/javascript' src='/learnajax/dwr/interface/MyClock.js'></script>
<script type='text/javascript' src='/learnajax/dwr/engine.js'></script>
<script type='text/javascript' src='/learnajax/dwr/util.js'></script>
<script type="text/javascript">
window.onload = function (){
dwr.engine.setActiveReverseAjax(true);
}
</script>
</head>
<body>
<input type="button" value="Start/Stop" onclick="MyClock.toggle();"/>
<h2 id="clockDisplay"></h2>
</body>
</html>
DWR Rerverse AJAX 的高级应用。
http://www.ibm.com/developerworks/cn/java/j-jettydwr/
分享到:
相关推荐
DWR(Direct Web Remoting)是实现这种功能的一种技术,尤其以其独特的Reverse Ajax特性在服务器推送(Server-Sent Events, SSE,也常被称为Comet技术)领域中备受关注。下面我们将深入探讨DWR Reverse Ajax的工作...
在这个“dwr3ReverseAjax示例”中,我们将深入探讨如何利用DWR 3.x版本来构建一个基于Ajax的简单Web聊天应用。 首先,DWR的核心功能是通过HTTP协议实现在客户端JavaScript和服务器端Java之间的远程方法调用(Remote...
在DWR 2.0版本中,引入了Reverse Ajax的概念,这是一种服务器主动向客户端推送数据的技术,这对于构建实时的Web应用程序,比如Web IM(即时通讯)应用,非常关键。 在这个例子中,我们将探讨如何利用DWR 2.0实现一...
**DWR (Direct Web ...总的来说,DWR是实现Reverse Ajax的一个强大工具,它简化了服务器与浏览器之间的交互,为构建富客户端Web应用提供了便利。了解并掌握DWR,对于提升Web应用的用户体验和交互性具有重要意义。
- **Reverse Ajax(反向Ajax)**: DWR实现了反向Ajax,即服务器可以主动推送数据到客户端,而不仅仅是响应客户端的请求。 - **Caching(缓存)**: DWR支持缓存服务器端的响应,提高性能,减少网络流量。 ### 2. ...
- **Reverse Ajax**:DWR的特色功能,使得服务器可以直接调用客户端的JavaScript函数。 3. **DWR的使用步骤** - **配置DWR**:在web.xml中配置DWRServlet,以及在dwr.xml中定义允许的远程Java类和方法。 - **...
- **反向AJAX (Reverse AJAX)**:DWR的核心是反向AJAX,即服务器主动推送数据到客户端,而不是传统的客户端发起请求获取数据。 - **远程调用 (Remote Method Invocation)**:DWR允许JavaScript直接调用服务器上的...
1. **Reverse AJAX**:DWR的核心特性之一是反向AJAX,即服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。这使得用户界面可以实时更新,提高了用户体验。 2. **JavaBeans与JavaScript对象映射**:DWR自动...
- `WEB-INF/web.xml`:Web应用的部署描述符,其中会配置DWRServlet,指定DWR的初始化参数,如`dwr.engine.reverseAjax`和`dwr.engine.debug`等。 - `dwr.xml`:DWR的核心配置文件,定义了哪些Java类和方法可以被...
在Web开发中,传统的Ajax技术主要是基于“拉”(Pull)模型,即浏览器(Browser)发起请求,服务器(Server)被动响应。然而,这种模型无法满足实时性需求,例如股票行情、即时聊天等应用场景。为了解决这一问题,...
1. **Reverse Ajax**:DWR的核心特性之一是实现了Reverse Ajax,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。这种技术打破了传统的Web交互模式,提高了用户体验。 2. **Remote Method ...
6. **实时更新**:DWR的Reverse AJAX特性使得服务器能够主动推送数据到客户端,实现了双向通信,常用于聊天、股票报价等实时应用。 7. **易于集成**:DWR可以轻松地与现有的MVC框架(如Spring MVC)集成,同时支持...
要实现服务器端向客户端的精确推送,DWR3提供了“Reverse Ajax”或者称为“Comet”技术。Comet是一种使服务器能够长时间保持HTTP连接开放的技术,以便在需要时向客户端发送更新。这种长轮询或流式传输的方式,使得...
DWR的独特之处在于它的“反转Ajax”(Reverse Ajax)概念,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。这在股票实时显示等需要即时更新信息的应用场景中非常有用。 在"股票实时显示"的应用...
- **Reverse AJAX Servlet**: DWR自动配置的Servlet,接收来自JavaScript的请求,并调用相应的Java方法。 - **Auto-Discovery**: DWR可以自动发现Java类中公开的方法,并暴露给JavaScript使用,只需要简单的注解...
- **Reverse Ajax**:DWR支持真正的服务器推送,即当服务器有新数据时,会主动推送到客户端,而不需要客户端发起请求。这通常是通过HTTP长连接或WebSocket实现的。 - ** Comet**:DWR也支持Comet技术,这是一种模拟...
4. **反向AJAX(Reverse AJAX)**:DWR实现了反向AJAX,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。 接下来,我们将探讨如何使用DWR进行基本操作: 1. **创建Java类**:首先,我们需要在...
Java 使用 Direct Web Remoting (DWR) 框架实现Ajax技术是一种常见的方式,它能够为Web应用程序提供异步更新和交互性。DWR允许Java服务器端代码与JavaScript在客户端直接通信,使得Web应用可以像桌面应用一样实时...
- **Reverse Ajax**: DWR通过Reverse Ajax实现了服务器向客户端的推送,即服务器可以在有新数据时主动通知客户端,而无需客户端持续轮询。 - **AutoComplete**: DWR提供了自动完成功能,可以在用户输入时动态提供...