下面内容出自0:javaeye的 hellostory 大虾。十分感谢他帮我解决了这个问题!
说明:可以将以下count值改变为表格内容
以下代码演示内容:
后台服务不停地累加count值,同时将count值推送到前台页面(index.html)中(表现为前台页面count值不停地累加显示)
第一步:创建后台推送服务
import java.util.Timer;
import java.util.TimerTask;
import org.directwebremoting.Browser;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.ui.dwr.Util;
public class Clock {
private long count = 0;//计数器,web页面用来显示
public Clock() {
// 创建一个定时任务,每隔10秒count自动加一
Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
count++;
}
}, 0,10);
}
// 通过无限循环调用setClockDisplay()刷新Web页面的数字内容
public synchronized void toggle() {
while (true) {
setClockDisplay(count+"");
//休眠一秒
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// 刷新index.html页面中<div id='clockDisplay'/>的内容,
// 即显示count的数值
public void setClockDisplay(final String output) {
String page = ServerContextFactory.get().getContextPath()
+ "/index.html";
Browser.withPage(page, new Runnable() {
public void run() {
Util.setValue("clockDisplay", output);
}
});
}
}
第二步:配置dwr.xml
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="Clock">
<param name="class" value="Clock"/>
</create>
</allow>
</dwr>
第三步:Web页面内容
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Comet测试</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="dwr/interface/Clock.js"></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type="text/javascript">
dwr.engine.setActiveReverseAjax(true);//开启ajax反转功能
</script>
</head>
<body>
<input type="button" value="开始" onclick="Clock.toggle();" />
<div id="clockDisplay">这里用来显示后台服务器推送的内容(即Count的值)</div>
</body>
</html>
第三步:Web页面内容
补充:这里的文件名是index.html
分享到:
相关推荐
DWR(Direct Web Remoting)是实现这种功能的一种技术,尤其以其独特的Reverse Ajax特性在服务器推送(Server-Sent Events, SSE,也常被称为Comet技术)领域中备受关注。下面我们将深入探讨DWR Reverse Ajax的工作...
dwr reverseajax clockms
dwr reverseajax ClockLogging
在这个“dwr3ReverseAjax示例”中,我们将深入探讨如何利用DWR 3.x版本来构建一个基于Ajax的简单Web聊天应用。 首先,DWR的核心功能是通过HTTP协议实现在客户端JavaScript和服务器端Java之间的远程方法调用(Remote...
Server Side Reverse Ajax Clock
在DWR 2.0版本中,引入了Reverse Ajax的概念,这是一种服务器主动向客户端推送数据的技术,这对于构建实时的Web应用程序,比如Web IM(即时通讯)应用,非常关键。 在这个例子中,我们将探讨如何利用DWR 2.0实现一...
DWR是基于AJAX技术的,但其提供了更高级的功能,如Reverse Ajax和自动类型转换,使得开发者可以更专注于业务逻辑,而无需过多关注底层通信细节。AJAX主要负责局部页面更新,而DWR则扩展了这一概念,使得服务器可以...
- **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直接调用服务器上的...
- `WEB-INF/web.xml`:Web应用的部署描述符,其中会配置DWRServlet,指定DWR的初始化参数,如`dwr.engine.reverseAjax`和`dwr.engine.debug`等。 - `dwr.xml`:DWR的核心配置文件,定义了哪些Java类和方法可以被...
1. **Reverse AJAX**:DWR的核心特性之一是反向AJAX,即服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。这使得用户界面可以实时更新,提高了用户体验。 2. **JavaBeans与JavaScript对象映射**:DWR自动...
1. **Reverse Ajax**:DWR的核心特性之一是实现了Reverse Ajax,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。这种技术打破了传统的Web交互模式,提高了用户体验。 2. **Remote Method ...
6. **实时更新**:DWR的Reverse AJAX特性使得服务器能够主动推送数据到客户端,实现了双向通信,常用于聊天、股票报价等实时应用。 7. **易于集成**:DWR可以轻松地与现有的MVC框架(如Spring MVC)集成,同时支持...
- **Reverse AJAX Servlet**: DWR自动配置的Servlet,接收来自JavaScript的请求,并调用相应的Java方法。 - **Auto-Discovery**: DWR可以自动发现Java类中公开的方法,并暴露给JavaScript使用,只需要简单的注解...
2. **Reverse Ajax Engine**: 实现JavaScript到Java的调用,以及Java结果的回传。 3. **Script.aculo.us Integration**: 提供与流行的JavaScript库(如jQuery或Prototype)的集成。 **六、DWR的安全性和优化** DWR...
4. **反向AJAX(Reverse AJAX)**:DWR实现了反向AJAX,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。 接下来,我们将探讨如何使用DWR进行基本操作: 1. **创建Java类**:首先,我们需要在...
- **Reverse Ajax**: DWR通过Reverse Ajax实现了服务器向客户端的推送,即服务器可以在有新数据时主动通知客户端,而无需客户端持续轮询。 - **AutoComplete**: DWR提供了自动完成功能,可以在用户输入时动态提供...
功能描述:模拟一个聊天室程序 comet.jsp就是聊天室接收消息的界面,action.jsp就是发送消息的界面,为了更好的说明问题,将接收界面和发送界面放在两个窗口中, 测试时同时可以打开多个接收界面和发送界面, ...