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>