1.在JSP页面加入展示代码:
新消息<input type="text" id="serverResponse" size="2"/>
2.新建一个JAVA类:
package com.msg;
public class MsgDeal {
public int getMsg(int uid){
MsgDao msgdao = new MsgDao();
return msgdao.getMsg(uid);//从数据库获取某个用户的新消息条数,这里自行实现即可
}
}
3.在WEB-INF下新建一个dwr.xml文件,配置JAVA类
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE
dwr
PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
"http://getahead.org/dwr/dwr30.dtd">
<dwr>
<allow>
<create creator="new" javascript="Msgdeal">
<param name="class" value="com.msg.MsgDeal"/>
</create>
</allow>
</dwr>
说明:1.x使用:<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://getahead.org/dwr/dwr10.dtd">
2.x使用:<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
3.x使用:<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
4.在web.xml中配置dwr:
<!-- dwr configuration -->
<servlet>
<display-name>DWR Servlet</display-name>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
说明:
如果版本是1.x,那servlet-class是用:uk.ltd.getahead.dwr.DWRServlet
2.x,3.x使用:org.directwebremoting.servlet.DwrServlet
5.在页面配置最后的脚本:
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/Msgdeal.js"></script> //Msgdeal的名字是dwr.xml中配置的名字
<script type="text/javascript">
function Test1(){
var _data = "";
dwr.engine.setAsync(false);//设置同步
Msgdeal.getMsg(1,function(data){_data = data;});//调用java中MsgDeal类的消息处理方法,这里的1是手动测试加入的,模拟的当前用户ID为1
dwr.engine.setAsync(true); //设置到初始状态
document.getElementById("serverResponse").value= _data; //设置获取的值
}
function init(){
Test1();//先加载一次
var time = 5000*10; //5*10秒
window.setInterval('Test1()',time); //关于setInterval的解释参见:http://zhoujingxian.iteye.com/blog/788719
}
</script>
6.加入dwr.jar包(如果是2.0以上的版本需要同时导入commons-logging-1.0.4.jar和log4j-1.2.12.jar以上版本的包)
分享到:
相关推荐
2. **轮询(Polling)**:在实时性要求较高的应用中,DWR支持定时轮询机制,即客户端定期向服务器发送请求,获取最新的数据。这种机制在没有WebSockets等实时通信技术时,是实现服务器数据即时更新的常见手段。 3. ...
这种交互方式使得前端可以实时获取到后端的数据,而不必刷新整个页面。 实现这个功能的第一步是设置DWR的基本环境。这包括在项目中添加DWR的依赖库,配置DWR的Context配置文件(通常为dwr.xml),以及创建DWR的Java...
它通过JavaScript创建XMLHttpRequest对象,向后台发送请求,获取响应数据,并在前端更新特定部分。这样,用户可以继续在其他部分操作,而不受后台处理的影响,提升了交互性。 DWR则是一种Java库,它简化了...
2. **异步数据更新**:比如,可以创建一个动态表格,前端定时调用服务器获取最新数据,更新表格内容,实现无刷新的数据刷新。 3. **文件上传**:DWR支持AJAX方式的文件上传,前端选择文件后,后台处理文件上传,同时...
在实现Reverse Ajax时,我们通常会创建一个后台线程或者定时任务,周期性地检查是否有新消息需要发送给客户端。一旦发现有新消息,DWR会利用HTTP长时间连接或者Comet技术将数据推送到浏览器。这样,用户无需频繁刷新...
2. **创建Java后台服务**:编写服务端代码,处理业务逻辑,并准备要推送的数据。 3. **创建反向AJAX通道**:在JavaScript中创建反向AJAX通道,注册事件监听器。 4. **客户端订阅**:在客户端JavaScript代码中订阅...
- **Polling**:定时轮询服务器,获取新数据。 - **Pushing**:服务器推送,当服务器有新数据时,主动通知客户端。 **5. 安全性与优化** - **安全性**:DWR可以通过限制可访问的方法、IP白名单等措施来确保安全。 -...
8. **com.springsource.org.quartz-1.6.2.jar**:Quartz是开源的作业调度框架,用于在Java应用程序中安排任务,如定时触发某些业务逻辑或后台作业。 9. **antlr-2.7.6.jar**:ANTLR (ANother Tool for Language ...