zoukankan      html  css  js  c++  java
  • 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>

      

  • 相关阅读:
    Service、chkconfig命令
    mongoDB 入门
    HTTP 缓存
    MIME类型记录
    CSS3 动画 思维导图
    部署Seafile服务
    AngularJS 学习笔记
    Bootstrap3 学习笔记
    CSS 弹性盒
    传送门(portal)
  • 原文地址:https://www.cnblogs.com/DFX339/p/10842580.html
Copyright © 2011-2022 走看看