博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用前端
阅读量:6342 次
发布时间:2019-06-22

本文共 1914 字,大约阅读时间需要 6 分钟。

  hot3.png

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

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

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

    ScriptSession scriptSession = WebContextFactory.get().getScriptSession();    String jsessionId = scriptSession.getHttpSessionId();    String dwrSessionId = scriptSession.getId();    LOGGER.info(String.format("set jsessionId = [%s],dwrsession = [%s] push enabled",jsessionId,dwrSessionId));    ConstantCacheService.putCacheConstant(Constants.PUSH_ID+jsessionId, dwrSessionId);

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

@Service("dwrReverseAjaxService")public class DwrReverseAjaxService {	private static final Logger LOGGER = LoggerFactory.getLogger(DwrReverseAjaxService.class);	public void directWebRemotingWithSession(HttpSession session, final String functionName) {		Assert.notNull(session, "[Dwr Reverse Ajax] Session can not be null!");		final String scriptSessionId = ConstantCacheService.getCacheConstantValue(Constants.PUSH_ID + session.getId());		LOGGER.info("[DWR Session ID] = " + scriptSessionId + " [Script Function Name] = " + functionName);		Browser.withSession(scriptSessionId, new Runnable() {			public void run() {				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里面,形如

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

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

转载于:https://my.oschina.net/521cy/blog/667098

你可能感兴趣的文章
JS 数据导出excel
查看>>
Linux进程间通信——信号量
查看>>
JPA 实体生命周期图(转)
查看>>
求某段时间内星期几的天数
查看>>
js中substr与substring的区别
查看>>
MVC总结
查看>>
《Programming in Lua 3》读书笔记(十)
查看>>
ASP.net中的Cache使用介绍
查看>>
方差分析 ANOVA
查看>>
C#三种排序 插入排序,选择排序,冒泡排序
查看>>
T-SQL语句的综合应用,生成工资报表
查看>>
去掉iphone连接电脑时会出现的弹出窗口
查看>>
【python】-- web开发之HTML
查看>>
vs2015 去除 git 源代码 绑定
查看>>
解决firefox的button按钮文字不能垂直居中
查看>>
网络协议端口号详解
查看>>
大话数据结构读后感——第一章
查看>>
各种排序
查看>>
洛谷 P1876 开灯
查看>>
oracle更改表字段类型长度
查看>>