dwr是java开发的轻量级框架,主要有两大核心功能:
1:ajax,
2:反ajax。
这篇文章主要介绍dwr的反ajax功能
需要dwr.jar文件,我的版本是3.0
定义一个推送消息的类
package com.alfa.service;
import java.util.Collection;
import org.directwebremoting.Browser;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.ScriptSessionFilter;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
public class SendMsg {
public void send(String msg){
System.out.println(msg);
final String autoMsg = msg;
Browser.withPageFiltered("/spring_mvc_010/jms/showMsg.jsp",new ScriptSessionFilter() {
@Override
public boolean match(ScriptSession arg0) {
return true;
}
}, new Runnable() {
ScriptBuffer sBuffer = new ScriptBuffer();
@Override
public void run() {
sBuffer.appendCall("show", autoMsg);
Collection<ScriptSession> sessions = Browser.getTargetSessions();
for (ScriptSession scriptSession : sessions) {
scriptSession.addScript(sBuffer);
}
}
});
}
}
接收消息页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<script type="text/javascript" src="${ctx }/js/jquery.js"></script>
<script type="text/javascript" src="${ctx }/dwr/util.js"></script>
<script type="text/javascript" src="${ctx }/dwr/engine.js"></script>
<script type="text/javascript">
$(function(){
dwr.engine.setActiveReverseAjax(true);
});
function show(msg){
$("#mess").append(msg);
}
</script>
<title>Insert title here</title>
</head>
<body>
<div id="mess">55</div>
</body>
</html>
发送信息的页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<script type="text/javascript" src="${ctx }/js/jquery.js"></script>
<script type="text/javascript" src="${ctx }/dwr/util.js"></script>
<script type="text/javascript" src="${ctx }/dwr/engine.js"></script>
<script type="text/javascript" src="${ctx }/dwr/interface/SendMsg.js"></script>
<script type="text/javascript">
$(function(){
dwr.engine.setActiveReverseAjax(true);
});
function sendMess(){
//SendMsg.send($("#msg").val());
$.ajax({
type:'POST',
url:'${ctx}/user/sendMess.html',
success:function(data){
alert("邮件已发送!");
},
error:function(){
alert("邮件发送出错!");
}
});
}
</script>
</head>
<body>
<input type="text" id="msg"/>
<input type="submit" value="发送邮件" onclick="sendMess()" />
</body>
</html>
web.xml配置
<servlet>
<servlet-name>dwr-invoke</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>pollAndCometEnabled</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoke</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
dwr.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<!-- 定义所有需要被暴露的Java方法 -->
<allow>
<!-- 定义将org.apache.struts2.validators.DWRValidator创建成一个validator对象 -->
<create javascript="SendMsg" creator="spring">
<param name="beanName" value="sendMsg"></param>
</create>
</allow>
</dwr>
至于类SendMsg的send方法可以随便调用
接受信息的页面最好是静态页面,我的一个动态页面没接受到,还请知道原因的大师留言哈
分享到:
相关推荐
在IT行业中,消息推送是一项重要的技术,它使得服务器能够实时地向客户端发送数据,而无需客户端不断地轮询请求。在本教程中,我们将探讨如何利用Direct Web Remoting (DWR) 和Spring框架来实现这样的功能。 DWR是...
本实例是在一些网络资料的基础上整合出来的一个:以后台向前台页面推送消息的一个完整实例工程,采用了spring、dwr反转,实现的是后台向前台不断推送消息,并管理相关用户退出;可以用在如定时任务的桌面消息提醒之...
通过分析这些代码,我们可以深入理解DWR如何在Spring环境中实现数据推送,以及如何优化和调试这样的系统。 总的来说,DWR+Spring的数据推送解决方案能够为Web应用提供实时、高效的交互体验,是现代Web开发中的一个...
Comet是一种Web编程模式,用于实现服务器向客户端的持久连接,从而实现数据的即时推送。Spring框架是Java领域广泛使用的轻量级应用框架,它可以与DWR结合,帮助开发者更方便地管理服务和组件。 在这个例子中,我们...
1. 实时通信:DWR通过WebSocket或者Comet技术实现服务器推送,使得数据更新无需用户触发。 2. 易于使用:DWR提供了简单的API,让JavaScript与Java的交互变得简单。 3. 安全性:DWR支持安全配置,如CSRF(跨站请求...
- **通信机制**:DWR的反向AJAX功能使得服务器可以主动推送消息到客户端,实现聊天的即时性。 4. **核心功能实现**: - **注册与登录**:用户通过输入用户名和密码进行注册和登录,这些信息通过DWR发送到服务器...
传统的Ajax技术通常依赖于浏览器发起请求,而DWR则允许服务器主动向客户端推送数据,无需等待用户的操作。这种特性使得DWR在实时应用如聊天、股票报价、在线游戏等场景中非常有用。 **消息推送原理** 消息推送的...
《Spring与DWR结合实现推送服务详解》 在现代Web应用开发中,实时交互和数据推送功能变得越来越重要。为了满足这一需求,开发者们通常会采用各种技术组合,其中Spring框架与Direct Web Remoting (DWR)的结合是常用...
实现Comet消息推送功能,根据登陆人定向推送,解决刷新页面原有ScriptSession不能及时销毁的问题,DEMO比较简陋,请先进入login.jsp页面登陆。根据登陆名称判断推送目标,可登陆多个用户进行测试。
本项目结合了Spring MVC和Direct Web Remoting (DWR)框架,利用注解的方式实现了一种高效的消息推送机制,支持对单个用户进行精确推送以及向指定成员或群组发送消息。无需额外的配置修改,极大地简化了开发流程。 ...
本示例将深入探讨如何使用DWR与Spring框架集成,实现服务器主动推送功能。 首先,我们需要理解DWR的核心概念: 1. **DWR Engine**: 是DWR的核心组件,它处理客户端和服务器之间的通信,包括JavaScript到Java的调用...
3. **双向通信**:除了客户端可以调用服务器端的方法外,服务器端也可以主动推送数据到客户端。 4. **易于集成**:DWR可以很容易地与现有的Java Web应用程序集成。 ### Spring框架 Spring框架是一个开源的应用程序...
DWR支持这种推送模式,可以显著提升用户体验,因为用户可以立即看到新消息,而无需手动刷新页面。 总结来说,这个项目涵盖了以下知识点: 1. Direct Web Remoting (DWR):用于实现JavaScript和Java之间的双向通信。...
在“DWR3实现服务器端向客户端精确推送消息”这一主题中,我们将深入探讨如何利用DWR3进行服务器到客户端的消息推送,以及这种技术的优势和应用。 首先,理解DWR3的工作原理是至关重要的。DWR3通过建立一个安全的...
总的来说,DWR推送技术通过Comet实现了高效的服务器到客户端的数据推送,简化了实时Web应用的开发。结合提供的源码示例"j-jetty-dwr-comet-src",开发者可以深入理解DWR的工作原理,并学习如何在实际项目中应用这项...
dwr 在线聊天室demo,实现在线聊天实时刷新技术。里面还有 3三个demo 有dwr+spring ,dwr+struts2 ,纯dwr. 只有charForDemo这个工程能用! 其他的可以参考一下,有问题QQ woshilouhefeng@vip.com ,QQ:652550936(这...
在本文中,我们将深入探讨DWR的后台推送技术,包括DWR 2.0、3.0以及与Spring集成的3.0+版本的实现方式,并结合提供的文件资源进行解析。 首先,让我们来看看DWR 2.0的推送技术。在DWR 2.0中,后台推送主要通过...
通过这些步骤的配置,可以实现在Spring MVC应用程序中使用DWR进行服务器到客户端的实时数据推送。这一整套流程对于初学者来说可能稍显复杂,但掌握了之后可以大幅提高Web应用程序的交互性和用户体验。
DWR3中的Server Push特性是其亮点,它能够主动将服务器端的数据推送到客户端,非常适合用于实时聊天系统,因为它可以及时将新消息推送给所有在线用户。 实现聊天功能,首先我们需要配置Spring3的环境,包括创建...
DWR的核心特性是反向AJAX,即服务器可以主动推送数据到客户端,而不仅仅是响应用户的请求,这大大增强了Web应用的用户体验。 S2SH框架是Struts2、Spring和Hibernate的集成,这是一种常见的MVC(Model-View-...