Saiku使用iframe嵌入頁面訪問地址配置化(二十八)--DWR的基本使用

Saiku使用iframe嵌入頁面使用時ip與端口配置化(二十八)--DWR的基本使用

 

DWR(Direct Web Remoting)是一個用於改善web頁面與Java類交互的遠程服務器端Ajax開源框架,能夠幫助開發人員開發包含AJAX技術的網站。它能夠容許在瀏覽器裏的代碼使用運行在WEB服務器上的JAVA方法,就像它就在瀏覽器裏同樣。javascript

這裏作的一個需求是 將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.javajava

@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,供前端調用方法時使用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>   

  

6 頁面中使用示例

最最關鍵的一步:在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>
相關文章
相關標籤/搜索