文档章节

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

源-代码
 源-代码
发布于 2016/04/27 16:21
字数 648
阅读 98
收藏 0

在前两篇中我们已经介绍了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里面,形如

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

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

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

© 著作权归作者所有

源-代码
粉丝 10
博文 9
码字总数 3999
作品 0
西安
后端工程师
私信 提问
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析一之零配置文件化

//Annotation configuration dwr servletprivate void initializeDwrServlet(ServletContext container) {DwrServlet dwrServlet = new DwrServlet();ServletRegistration.Dynamic dynamic =......

源-代码
2016/04/27
413
1
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析二之前端调用后端

首先当我们将Dwr3配置好以后,我们可以在浏览器中测试一下,查看一下我们配置的Dwr有没有生效,方法是 http://localhost:[你的服务器端口号,默认不写为80]/[ Web 名称 ]/dwr/,回车后就会出...

源-代码
2016/04/27
784
2
【Cloud Foundry 应用开发大赛】“Url2Sql”后端是前端的MySql

应用名称:Url2Sql 应用URL地址: 应用说明:本应用就是把复杂的后台代码转变为web页面可视化操作完成的工作。举例说,请求形如 的链接背后可能只是完成了一条形如的Sql。既然如此,为何每次...

高雷
2013/01/22
2.2K
19
JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署

一、使用eclipse初始化一个JSP WEB项目(即:动态WEB项目),步骤如下: 如上图示注意选择TOMCAT版本 如上图示勾选生成web.xml,当然如果不勾选也行,但后续如果有需要用到配置的地方就需要再单...

编程SHA
04/20
16
0
justlive1/oxygen

oxygen 轻量级Java框架 介绍 一个轻量级Java框架 oxygen-core 核心部分 基于cglib的aop实现 提供缓存管理和基于注解的缓存,内置LocalCache和Ehcache实现,可扩展 配置管理,支持${attrs.key...

justlive1
2018/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

skywalking(容器部署)

skywalking(容器部署) 标签(空格分隔): APM [toc] 1. Elasticsearch SkywalkingElasticsearch 5.X(部分功能报错、拓扑图不显示) Skywalking需要Elasticsearch 6.X docker network create......

JUKE
1分钟前
0
0
解决Unable to find a single main class from the following candidates [xxx,xxx]

一、问题描述 1.1 开发环境配置 pom.xml <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!--一定要对上springboot版本号,因......

TeddyIH
2分钟前
0
0
Dubbo服务限制大数据传输抛Data length too large: 13055248, max payload: 8388608解决方案

当dubbo服务提供者向消费层传输大数据容量数据时,会受到Dubbo的限制,报类似如下异常: 2019-08-23 11:04:31.711 [ DubboServerHandler-XX.XX.XX.XXX:20880-thread-87] - [ ERROR ] [com.al...

huangkejie
5分钟前
0
0
HashMap和ConcurrentHashMap的区别

为了线程安全,ConcurrentHashMap 引入了一个 “分段锁” 的概念。具体可以理解把一个大的 map 拆分成 N 个小的 Map 。最后再根据 key.hashcode( )来决定放到哪一个 hashmap 中去。 hashmap ...

Garphy
6分钟前
0
0
购买SSL证书需要注意哪些问题

为了保障网站的基本安全,为网站部署SSL证书,已经是一种常态了。各大浏览器对于安装了SSL证书的网站会更友好,并且不会发出“不安全”的提示。部署SSL证书之前首先得去给网站购买一个SSL证书...

安信证书
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部