Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用前端
程序员文章站
2024-03-09 15:59:47
在前两篇中我们已经介绍了dwr零配置文化化和前端调用后端的方法,想必大家应该已经会熟练掌握了,下来我们主要探讨一下后端怎么反向调用前端的js方法;
就如前两篇说到了用dw...
在前两篇中我们已经介绍了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, ""); }});}}
这个service是利用了scriptsessionid来进行反向定位推送的,而这个scriptsessionid是利用我们之前页面刚加载进来就建立好保存到的一个全局的map对里面;
下来只要在你想要什么时候调用的时候使用注册的这个service bean就可以了,传进去的参数为httpsession和你想调用的前端js funciton name,同时注意一下当前页面存在这个js function,而且一般是主页面的js里面的方法才能被访问到,否则前端会提示该方法未定义的错误;
以上就是关于dwr的简单应用,纯属第一次用,有什么不对的地方,请大家指正出来,感激不尽啊!大神请飘过~~~~~;