- 浏览: 136361 次
- 性别:
- 来自: 无锡
文章分类
最新评论
-
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 574spring-cache并不是一个缓存框架的具体实现,仅仅是 ... -
log4j2+slf4j+spring4+mybatis的整合使用
2017-11-01 16:30 1799log4j从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 1761hibernate继承之一,单表继承映射 对象有 ... -
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 995场景:自定义注解,AOP拦截,处理前置业务。然后从spri ... -
Struts2的总结笔记
2013-04-01 10:22 01、从官方提供的流程图来详细了解struts2的一个请求流程 ...
相关推荐
dwr消息推送功能。可以实现实时消息推送
用dwr3实现推送功能,文件就是该实现代码
dwr简单推送例子,实现服务端想客户端推送的功能
学习两天,项目中做一个反向推送功能,功能比较简单,但是比较实用。要是项目中集成的话直接修改一下包路径 就行了。推送是session做的。可以用用户ID的。
使用DWR服务器推送技术实现聊天功能,在线的所有用户以及用户发送的消息都有服务器“推”给客户端进行显示。
前段时间有这个需求,查了很多网站都没有一个完整解决方案。自己写了一个。使用spring与dwr实现在js或者java给指定的用户推送消息提示的功能。
一个DWR的消息推送实时聊天功能,可执行的小Demo演示,因为没有去写过多的解释,附带了一个理解DWR的地址在里面,想要更深的了解需要去游览博客
实现Comet消息推送功能,根据登陆人定向推送,解决刷新页面原有ScriptSession不能及时销毁的问题,DEMO比较简陋,请先进入login.jsp页面登陆。根据登陆名称判断推送目标,可登陆多个用户进行测试。
本demo是一个dwr推送的demo,适合初学者学习,页面刷新不会无脑创建重复的监听,合理的使用sessionManage
Dwr推送技术实现BS即时通讯,项目源代码,功能实现
最近工作需要写一个后台推送消息到浏览器提示用户操作的功能,感觉很好,现在把自己写的测试代码跟大家分享。
主要实现: java后台隔空调用JS函数和JS直接引用java后台方法
实现Comet消息推送功能,根据登陆人定向推送,解决刷新页面原有ScriptSession不能及时销毁的问题,DEMO比较简陋,请先进入login.jsp页面登陆。根据登陆名称判断推送目标,可登陆多个用户进行测试。
里面用dwr技术实现了简易的对话功能,所需的包已经自带放好了,代码可直接运行看效果(可直接打开多个页面运行看效果)
精简的DEMO,能实现基本的推送功能,简单晚懂。
由于出现了基于web的服务器反向推送技术,这也是本文的创新之处所在,本文在传统研究的基础之上,提出了一种基于消息总线的实时推送技术,该技术采用JMS消息服务、结合DWR框架来实现模块间信息的实时传递,在文中...
实现简单的功能以供学习,欢迎大家批评.主要涉及DWR框架技术。
服务器推送技术,在同一个界面实现多用户聊天和私聊功能
基于dwr的聊天室,也可实现消息的推送,类似与websocket失效消息发送推送功能
Dwr是为人所熟知的前端框架,其异步推送功能是为人所津津乐道的,下来主要研究一下它的这个功能是怎么应用的;