欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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的简单应用,纯属第一次用,有什么不对的地方,请大家指正出来,感激不尽啊!大神请飘过~~~~~;