- 浏览: 138454 次
- 性别:
- 来自: 无锡
文章分类
最新评论
-
yh443042575:
楼主造福社会呀,顶顶顶!!!
jfreechart学习笔记三 带刻度的蜘蛛图 -
twtja1:
最后一句"如果需要在父类中仍然要使用类型字段,需要在 ...
hibernate继承之一,单表继承映射 -
qq361837213:
更换新版dwr的jar包就行了,新版本解决了这个问题
dwr文件上传在chrome下的问题及解决方法 -
无象心:
无象心 写道改为这样就可以了
loadingComple ...
dwr文件上传在chrome下的问题及解决方法 -
无象心:
loadingComplete:function(ba ...
dwr文件上传在chrome下的问题及解决方法
1、web.xml的配置,红色部分为dwr推技术的主要配置
<servlet>
<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>
<init-param>
<param-name>logLevel</param-name>
<param-value>ERROR</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value>
</init-param>
<!--
<init-param> <param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value> </init-param> <init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value> </init-param>
-->
<init-param>
<param-name>classes</param-name>
<param-value>java.lang.Object</param-value>
</init-param>
<!-- 开启反转Ajax 即所谓推技术 -->
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>initApplicationScopeCreatorsAtStartup</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>1000</param-value>
</init-param>
<!-- 对dwr scriptSession 自定义管理 -->
<init-param>
<param-name>org.directwebremoting.extend.ScriptSessionManager</param-name>
<param-value>com.xx.xx.util.DwrScriptSessionManagerUtil</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2、由于使用dwr推技术,在每次刷新的时候都会产生一个新的scriptsession,而dwr本身并没有对旧的scriptsession进行处理,所以需要自己对其进行处理,在初始化配置中加入自己的scriptsession管理类:DwrscriptSessionManagerUtil
public class DwrScriptSessionManagerUtil extends DefaultScriptSessionManager{
public static final String SS_ID="DWR_ScriptSession_Id";
public DwrScriptSessionManagerUtil(){
try{
addScriptSessionListener(new ScriptSessionListener() {
public void sessionDestroyed(ScriptSessionEvent event) {
}
public void sessionCreated(ScriptSessionEvent event) {
ScriptSession scriptSession = event.getSession();//得到新创建的scriptSession
HttpSession httpSession = WebContextFactory.get().getSession();//得到产生的httpSession
Users user = (Users) httpSession.getAttribute(Constant.LG_SESSION_USER);//得到当前用户
//如果当前用户已经退出系统,然后销毁这个scriptsession
if(user==null)
{
scriptSession.invalidate();
httpSession.invalidate();
return;
}
String ssId = (String) httpSession.getAttribute(SS_ID);//查找SS_ID
if(ssId!=null)
{
//说明已经存在旧的scriptSession.注销这个旧的scriptSession
DefaultScriptSession oldScriptSession = sessionMap.get(ssId);
if(oldScriptSession!=null)
{
invalidate(oldScriptSession);
}
}
httpSession.setAttribute(SS_ID, scriptSession.getId());
scriptSession.setAttribute(Constant.LG_USER_ID, user.getId());//绑定用户ID到ScriptSession上
}
});
}catch (Exception e) {
System.out.println("zhelichucuo");
e.printStackTrace();
}
}
public static void invalidate(String ssId)
{
Browser.withSession(ssId, new Runnable() {
public void run() {
Collection<ScriptSession> sessions = Browser.getTargetSessions();
for(ScriptSession session : sessions)
{
session.invalidate();
}
}
});
}
}
3.js中开启dwr推功能
在window.onload中使用dwr.engine.setActiveReverseAjax(true);
4、java代码中使用dwr推功能
//dwr3使用新的方式进行推送,2的方法已被注明为过时,一般来说,很少是做全推送的,基本都是有针对性的半推
//送,所以我们将使用一个过滤器来过滤要推送的scriptsession,这里涉及到我的具体业务,这个过滤器的原理是会对
//所有的进行循环过滤后,将符合条件的scriptsession存放到一个集合中,才开启新线程进行处理的。
Browser.withAllSessionsFiltered(new ScriptSessionFilter() {
public boolean match(ScriptSession session) {
Long loginUserId = (Long) session.getAttribute(Constant.LG_USER_ID);
if(loginUserId!=null && targetIdList.contains(loginUserId))
{
targetIdList.remove(loginUserId);//如果找到了,说明将被推送,所以不用再处理,剩下的都是要被处理的
return true;
}
return false;
}
}, new Runnable() {
private ScriptBuffer script = new ScriptBuffer();
public void run()
{
script.appendCall("这里写你页面的js函数", 这个参数是传给js函数的);
Collection<ScriptSession> sessions = Browser.getTargetSessions();
for (ScriptSession scriptSession : sessions)
{
scriptSession.addScript(script);
}
//ScriptSessions.addFunctionCall("ExtTalk.updateMegGroup", data);//之所以不用这个方法,是因为这个
//方法有bug的存在,会对所有不论过不过滤的scriptsession进行推送,相当于全推送,没有起到过滤的作用
}
});
dwr的推功能还是很方便的,用来做消息通知还是不错的
发表评论
-
springboot+springcloud(4)-config
2018-04-19 19:41 0前置知识点: 在spring-cloud的官方文 ... -
springboot+springcloud(3)-hystrix
2018-04-17 16:27 01、加入断路由,由于feign中本身就有断路由,可以不加入 ... -
springboot+springcloud(2)-robbin+feign
2018-04-17 12:26 01、eureka-clien中包含了ribbon需要的依赖 ... -
springboot+springcloud(1)-eurake
2018-04-16 17:32 01、eureka 服务中心 依赖只需 < ... -
spring-cache的使用
2017-11-01 17:03 615spring-cache并不是一个缓存框架的具体实现,仅仅是 ... -
log4j2+slf4j+spring4+mybatis的整合使用
2017-11-01 16:30 1848log4j从1到2有不少的变化和增强。所以考虑将项目中 ... -
tomcat部署多个项目注意点
2016-11-22 21:45 01、启动老是报jdbc.driver的错。把jar都从 ... -
maven多模块
2015-03-05 16:46 01、在使用Maven构建多模块的时候 比如会分为服务mod ... -
Struts2总结
2014-10-17 21:52 01、struts2的返回类型 (1)json json ... -
maven学习笔记六 构建配置
2014-07-02 22:22 0maven一直致力于使构建 ... -
maven学习笔记五 POM
2014-06-26 00:27 0POM project object model项目对象模 ... -
Maven学习笔记四 生命周期
2014-06-24 23:41 0Maven的项目管理和构建是基于生命周期这个概念的。 这意 ... -
maven3读书笔记 第一个maven工程
2014-06-17 10:06 0在命令行中输入: mvn archetype:gener ... -
hibernate继承之一,单表继承映射
2014-03-23 23:18 1792hibernate继承之一,单表继承映射 对象有 ... -
liferay学习
2014-02-17 14:13 0关于liferay的学习笔记 -
关于南车项目的一些技术性总结
2013-11-06 10:15 0写道 set JAVA_OPTS=-Xms512m ... -
php5.5 win7 64位系统安装配置
2013-07-23 21:04 0本人系统是win7 64 位所以需要安装64位的php ... -
Hibernate middleGen工具使用
2013-07-16 23:01 0本文所用数据库版本为MySQL5.0.15、Oracle10 ... -
springAOP后对象代理和hibernate不识别问题
2013-07-16 23:03 1027场景:自定义注解,AOP拦截,处理前置业务。然后从spri ... -
Struts2的总结笔记
2013-04-01 10:22 01、从官方提供的流程图来详细了解struts2的一个请求流程 ...
相关推荐
本篇文章将详细讲解如何利用DWR 3实现推送功能。 1. **DWR 3 的基本概念** DWR 3 提供了一种安全、高效的机制,使得JavaScript可以调用Java方法,并将结果返回到页面上。这种机制是基于HTTP的异步请求,因此无需...
### dwr消息推送功能 Direct Web Remoting (DWR) 是一种开源框架,它简化了JavaScript与服务器端Java代码之间的交互。DWR 提供了一种简单的方法来将 Java 对象暴露给 JavaScript,允许 JavaScript 调用 Java 方法,...
在DWR3中,"推送消息"功能是其特性之一,它使得服务器能够主动向客户端推送数据,而不仅仅是响应客户端的请求。这种技术通常被称为Comet或长轮询,可以用于实现实时通信,如聊天应用、股票报价、在线游戏等场景。 ...
本实例主要关注DWR的消息推送功能,这在创建实时更新的应用如聊天室、股票报价或在线游戏等场景中非常有用。 1. **DWR框架概述** DWR框架的核心是将Java对象暴露给JavaScript,使得前端可以像操作本地对象一样操作...
Spring是一个广泛使用的Java应用框架,提供了依赖注入、面向切面编程、事务管理等功能,同时也支持多种集成技术,如WebSocket、HTTP长轮询等,用于实现消息推送。 将DWR与Spring结合,可以创建出高效且易于维护的...
本文将详细介绍如何实现DWR的服务器推送功能。 一、DWR简介 DWR的核心功能是通过AJAX技术创建了一个JavaScript到Java的桥梁,使得开发者可以像操作本地对象一样操作远程服务器上的对象。它支持自动类型转换、错误...
DWR3是DWR的一个版本,提供了更加强大和灵活的特性,包括异步通信、AJAX支持以及实时消息推送等。 在"消息推送"这一场景下,DWR3扮演了关键角色。它能够实现在一个页面上发送的消息,被其他页面实时接收和显示。...
在本文中,我们将深入探讨如何使用DWR实现服务器到客户端的消息推送。 1. **DWR基本概念** DWR的核心功能是提供一种方式让Java方法可以直接调用JavaScript函数,反之亦然。这使得服务器能够实时地向浏览器发送数据...
DWR推送技术的实现主要涉及以下几个关键组件: 1. **DWR Engine**:这是DWR的核心部分,负责处理JavaScript与服务器端Java对象之间的交互。它通过AJAX(Asynchronous JavaScript and XML)技术在客户端和服务器之间...
在这个“dwr消息推送完整示例”中,我们将深入探讨如何利用DWR实现实时的消息推送功能。 **一、DWR基础** 1. **安装与配置** 在开始之前,确保你的项目中已经包含了DWR的JAR文件。将它们添加到项目的类路径中,并...
总结来说,"dwr demo 反向推送 导向推送"是一个演示如何使用DWR实现实时服务器推送的项目,它包括了必要的配置和JavaScript调用,对于理解DWR的工作原理以及在实际项目中应用反向推送技术非常有帮助。通过学习这个...
DWR (Direct Web Remoting) 是一种开源的Java库,它允许Web应用...- HTML和CSS文件:包含使用DWR实现服务器推送功能的示例页面。 通过学习和应用DWR,开发者可以构建出更具实时性和互动性的Web应用,提升用户的体验。
总的来说,这个"DWR Java推送例子 免积分"提供了一个学习和实践DWR实时推送功能的机会,特别适合那些希望在Web应用中实现即时通信功能的开发者。通过理解并实践这个例子,你可以更好地掌握DWR的使用,以及如何在不...
DWR3的消息推送功能在实时应用,如聊天室、股票报价、在线游戏等场景中非常有用。它减少了延迟,提高了用户体验。然而,需要注意的是,由于Comet技术基于长连接,可能会对服务器负载和并发性产生影响,因此在设计和...
在`DWR3.0_PUSH`目录下的代码示例,展示了如何在Spring环境中配置和使用DWR的推送功能。 除了代码实现,提供的`DWR推技术PPT.pptx`可能包含了一份详细的讲解,涵盖了DWR后台推送的基本概念、工作原理、配置步骤以及...
本篇文章将详细介绍如何利用DWR实现消息的精确推送功能。 #### 二、准备工作 在开始实现之前,我们需要做好以下几项准备工作: 1. **引入DWR库**:首先确保项目中已经包含了`dwr.jar`文件。 2. **配置web.xml**:...
在"Dwr2推送Demo"中,我们主要关注的是DWR的实时推送功能。在传统的Web应用中,页面更新通常依赖于用户手动刷新或者服务器端的请求响应。然而,DWR2引入了Push技术,使得服务器能够主动向客户端推送数据,而无需...
在提供的压缩包文件`webChat`中,很可能包含了一个简单的聊天应用示例,它使用DWR实现了服务器到客户端的消息推送功能。通过分析这个示例,你可以更深入地理解DWR的使用方法,以及如何在实际项目中应用消息推送。 ...
在实际应用中,使用DWR服务器推送的例子可能包括实时聊天系统、股票行情更新、在线游戏状态同步等。例如,你可以创建一个Java类,定义一个返回最新消息的方法,然后在dwr.xml中配置该类和方法,使其可以被JavaScript...
在SpringMVC + DWR的组合中,DWR的引擎会在客户端创建一个长连接,当服务器有新消息时,可以通过这个连接直接推送到客户端,更新页面内容。 **实现步骤** 1. **配置DWR:** 首先需要在Web应用的`web.xml`中配置DWR...