DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,能够帮助开发人员开发包含AJAX技术的网站。它能够容许在浏览器里的代码使用运行在WEB服务器上的JAVA方法,就像它就在浏览器里同样。javascript
这里作的一个需求是 将saiku的访问url配置化,放到配置文件里,而后在jsp页面里就不直接写saiku的url了.前端
saiku.url=http://10.22.33.44:8080
<!-- 参数设置配置文件 --> <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>
GetSaikuUrlAction.javajava
@Value("${saiku.url}") private String saikuUrl; /** * 从配置文件config.properties中读取saiku的访问地址信息 * @return saikuUrl (访问saiku的IP与端口信息)
*/
public String getSaikuUrl(){ return saikuUrl; }
<bean id="getSaikuUrlAction" scope="prototype" class="com.GetSaikuUrlAction" />
<create creator="spring" javascript="getSaikuUrlService"> //转换获得的JS对象名为 getSaikuUrlService,供前端调用方法时使用web
<param name="beanName" value="getSaikuUrlAction" /> //指定相关的bean名称 spring
<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>
最最关键的一步:在WebRoot下,新建一个文件夹叫dwr,而后从dwr.jar中找到engine.js和util.js 放入dwr文件夹中。app
<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>