Saiku使用iframe嵌入页面访问地址配置化(二十八)--DWR的基本使用
Saiku使用iframe嵌入页面使用时ip与端口配置化(二十八)--DWR的基本使用
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA方法,就像它就在浏览器里一样。
这里做的一个需求是 将saiku的访问url配置化,放到配置文件里,然后在jsp页面里就不直接写saiku的url了.
1.在配置文件 config.properties文件中添加配置信息
saiku.url=http://10.22.33.44:8080
2.在spring的配置文件 applicationContext.xml中添加读取配置文件的配置信息
<!-- 参数设置配置文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- <property name="order" value="2" /> -->
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>file:${user.home}/../../app/config/iModule-lifepro-web/config.properties</value>
</list>
</property>
</bean>
3.新建Controller / Action类(具体根据自己的框架而定),在类中通过注解获取配置文件的参数对应的参数值
GetSaikuUrlAction.java
@Value("${saiku.url}")
private String saikuUrl;
/**
* 从配置文件config.properties中读取saiku的访问地址信息
* @return saikuUrl (访问saiku的IP与端口信息)
*/
public String getSaikuUrl(){
return saikuUrl;
}
4.在配置文件中配置注入Controller/Action对象
<bean id="getSaikuUrlAction" scope="prototype" class="com.GetSaikuUrlAction" />
5.在 WEB-INF 目录下新建 并配置dwr.xml 文件
<create creator="spring" javascript="getSaikuUrlService"> //转换得到的JS对象名为 getSaikuUrlService,供前端调用方法时使用
<param name="beanName" value="getSaikuUrlAction" /> //指定相关的bean名称
<include method="getSaikuUrl"/> //Action里面定义的方法名,在js里面调用时也是使用 getSaikuUrlService.getSaikuUrl
页面可以通过引入js文件调用此方法 <script type="text/javascript" src="/项目名/dwr/interface/getSaikuUrlService.js"></script> //这个只是这样写,实际上此 js 是运行期间服务器通过dwr动态生成的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
<dwr> <allow>
<!--
<filter class="com.example.dwr.monitor.MonitoringAjaxFilter"/>
<filter class="org.directwebremoting.filter.ExtraLatencyAjaxFilter">
<param name="delay" value="200"/>
</filter>
-->
<filter class="org.directwebremoting.filter.AuditLogAjaxFilter"/> <create creator="spring" javascript="getSaikuUrlService"> <!-- 转换得到的JS对象名为 getSaikuUrlService,供前端调用方法时使用 -->
<param name="beanName" value="getSaikuUrlAction" />
<include method="getSaikuUrl"/>
</create> </allow>
</dwr>
6 页面中使用示例
最最关键的一步:在WebRoot下,新建一个文件夹叫dwr,然后从dwr.jar中找到engine.js和util.js 放入dwr文件夹中。
(ps: 这里也可以不手动去下载 dwr.jar,新建dwr文件夹; 我们可以通过在pom.xml中引用dwr相关的jar包,然后就会自动被引用)
<dependency>
<groupId>self.imodule</groupId>
<artifactId>dwr</artifactId>
<version>1</version>
</dependency>
demo.jsp
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/getSaikuUrlService.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
<script>
var saikuUrl = null;//定义全局变量saikuUrl 访问saiku的地址
$(function() {// 初始化内容
//先获取saiku的访问地址,再做其他操作
getSaikuUrlService.getSaikuUrl({
//dwr正常调用时 返回结果数据 然后获取结果做以下操作 访问saiku
callback:function(data) {
saikuUrl=data;
var baseUrl=saikuUrl+"/?username=admin&password=123#query/open//demo/demo_1.saiku"; /*这是軿凑后完整的saiku某个文件的地址信息*/
/*这里省略获取saiku地址后的处理逻辑信息........*/
},
//dwr调用接口失败时
errorHandler:function(errorString, exception) {//执行异常时
alert("获取SaikuUrl地址失败,请检查DWR调用!"+errorString+":"+exception);
}
});
</script>
Saiku使用iframe嵌入页面访问地址配置化(二十八)--DWR的基本使用的更多相关文章
- Saiku通过iframe嵌入web页面(六)
Saiku通过iframe嵌入系统页面 前提: Saiku已安装好,并且配置了数据源,熟练了saiku的基本使用. 一.将整个Saiku嵌入页面 在web项目中,新建index.jsp页面,内容如下: ...
- iframe嵌入页面不能全部展示
在嵌入页面不能全部展示的问题中,可以通过js改变iframe的高度 html部分代码: <iframe src="#" name="i" id=" ...
- 手把手教你搭建LyncServer2013之部署及配置监控功能(十八)
自弃用监控服务器角色以来,已对 Microsoft Lync Server 2013 监控基础结构进行了重大更改.不再采用不同的监控服务器角色(通常需要组织设置专用计算机来充当监控服务器),现在监控服 ...
- 通过JdbcTemplate编写数据访问(二十八)
数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. 首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置: 1 2 3 4 < ...
- Spring Boot教程(二十八)通过JdbcTemplate编写数据访问
数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. 首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置: <depende ...
- AngularJS进阶(二十八)解决AngualrJS页面刷新导致异常显示问题
解决AngualrJS页面刷新导致异常显示问题 绪 俗话说,细节决定成败,编程亦是如此.编程过程中我们可能会不自觉的忽视一些细节问题,殊不知,这些细节正是导致页面显示出现问题的地方.今略举一例,与君共 ...
- 爪哇国新游记之二十八----从url指定的地址下载文件到本地
package download; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; ...
- Oracle环境配置之山路十八弯
Oracle数据库的安装 背景: 因为疫情原因,只能在家上网课,学习Oracle的时候需要安装数据库,但是!! 安装的时候出现了报错: 无法检查指定的位置是否位于 CFS 上. 出来这个基本无解,这个 ...
- Linux学习之CentOS(二十八)--RAID原理基础及Linux下软件RAID配置
一.RAID的原理基础 在 讲解RAID的原理基础之前,我们首先来了解一下传统磁盘的劣势.我们知道一台PC机种都会包含CPU.内存.主板.硬盘.网卡等硬件,影响计算机性能的 组建包括:CPU.主板总线 ...
随机推荐
- 如何在Mac上识别和删除损坏的字体
字体看起来像无害的文件,而且大多数时候都是这样.但是,就像任何计算机文件一样,字体可能会损坏或损坏.发生这种情况时,它们可能会导致文档或应用程序出现问题.在Mac上使用“ 字体簿”来验证已安装的字体, ...
- 10. 函数-lambda函数及高阶函数
一.匿名函数解析 关键字lambda表示匿名函数,冒号前面的n表示函数参数,可以有多个参数.匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. 用匿名函数有 ...
- 10. Vue - axios
一.预备知识 1. JS面向对象 特点:ES5之前用构造函数方式,构造函数就是一个普通函数,它的函数名大写. 构造函数的问题:方法不会提升至构造函数内,而是每创建一个对象,就要把那个方法保存在每个对象 ...
- tf.InteractiveSession()与tf.Session()的区别
Tensorflow依赖于一个高效的C++后端来进行计算.与后端的这个连接叫做session.一般而言,使用TensorFlow程序的流程是先创建一个图,然后在session中启动它. 这里,我们使用 ...
- C语言程序设计100例之(18):火柴棒等式
例18 火柴棒等式 用n根火柴棍,可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棒拼出的整数(若该数非零,则最高位不能是0).用火柴棒拼数字0~9的拼法如图1所示. 图1 用 ...
- 从数据表字段 float 和 double 说起
今天在公司讨论项目重构的问题时,公司的 DBA 针对表中的字段大概介绍了一下 float 和 double 的存储方式.然后,我发现这个问题又回到了浮点数类型在内存中的存储方式,即 IEEE 对浮点数 ...
- freemarker从入门到精通
目录 一:概述 二:Freemarker的Helloworld 三:freemarker模板语法 1.访问map中的key 2.访问POJO中的属性 3.取集合中的数据 4.判断 5.日期 6.Nul ...
- Java题库——Chapter3 操作符、选择
1)The "less than or equal to" comparison operator in Java is ________. A)<< B) != C) ...
- 【UR #5】怎样更有力气
Problem Description 大力水手问禅师:"大师,很多事情都需要用很大力气才能完成,而我在吃了菠菜之后力气很大,于是就导致我现在非常依赖菠菜.我很讨厌我的现状,有没有办法少吃点 ...
- ASP.NET Core 2.2 WebApi 系列【一】搭建ASP.NET Core WebApi项目
一.步骤 从“文件”菜单中选择“新建”>“项目” . 选择“ASP.NET Core Web 应用程序”模板,再单击“下一步” . 将项目命名为 NetCoreWebApi,然后单击“创建” . ...