加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用

发布时间:2020-12-16 01:40:14 所属栏目:百科 来源:网络整理
导读:在前两篇中我们已经介绍了Dwr零配置文化化和前端调用后端的方法,想必大家应该已经会熟练掌握了,下来我们主要探讨一下后端怎么反向调用前端的js方法; 就如前两篇说到了用Dwr注册了两个Service组件,一个是remote,另外一个是页面使用到的controller,这个re

在前两篇中我们已经介绍了Dwr零配置文化化和前端调用后端的方法,想必大家应该已经会熟练掌握了,下来我们主要探讨一下后端怎么反向调用前端的js方法;

就如前两篇说到了用Dwr注册了两个Service组件,一个是remote,另外一个是页面使用到的controller,这个remote是在页面一加载进来就会被调用的,这样就使得会话和页面ScriptSession建立了绑定的关系,方便我们后面使用它的scriptSessionId进行页面定向推送;

下面是建立会话和页面ScriptSession的方法(页面刚加载进来的时候就会被调用的):

ScriptSessionscriptSession=WebContextFactory.get().getScriptSession();
StringjsessionId=scriptSession.getHttpSessionId();
StringdwrSessionId=scriptSession.getId();
LOGGER.info(String.format("setjsessionId=[%s],dwrsession=[%s]pushenabled",jsessionId,dwrSessionId));
ConstantCacheService.putCacheConstant(Constants.PUSH_ID+jsessionId,dwrSessionId);

下面是用来反向调用前端的Service方法:

@Service("dwrReverseAjaxService")
publicclassDwrReverseAjaxService{

	privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(DwrReverseAjaxService.class);

	publicvoiddirectWebRemotingWithSession(HttpSessionsession,finalStringfunctionName){
		Assert.notNull(session,"[DwrReverseAjax]Sessioncannotbenull!");
		finalStringscriptSessionId=ConstantCacheService.getCacheConstantValue(Constants.PUSH_ID+session.getId());
		LOGGER.info("[DWRSessionID]="+scriptSessionId+"[ScriptFunctionName]="+functionName);
		Browser.withSession(scriptSessionId,newRunnable(){
			publicvoidrun(){
				ScriptSessions.addFunctionCall(functionName,"");
			}
		});
	}
}
ConstantCacheService就是这个对这个Map进行操作的静态类,DWR反向Ajax 是利用了scriptSessionId来进行反向定位推送的,而这个scriptSessionId是利用我们之前页面刚加载进来就建立好保存到的一个全局的Map对里面();

下来只要在你想要什么时候调用的时候使用注册的这个Service bean就可以了,传进去的参数为HttpSession和你想调用的前端Js funciton name,同时注意一下当前页面存在这个Js function,而且一般是主页面的Js里面的方法才能被访问到,否则前端会提示该方法未定义的错误;同时在Js function所在的页面的*.html刚进来时就调用一下dwr.engine.setActiveReverseAjax(true);一般放在body里面,形如

<bodyonload="dwr.engine.setActiveReverseAjax(true);"></body>

这个是比较关键的,还有一个dwr.engine.setErrorHandler(function(){});也可加在上面那句的后面,用来处理报告异常的,这个是可选的;

以上就是关于Dwr的简单应用,纯属第一次用,有什么不对的地方,请大家指正出来,感激不尽啊!大神请飘过~~~~~;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读