DWR學習筆記1

 DWR是一個框架,簡單的說就是能夠在javascript直接調用java方法,而不必去寫一大堆的javascript代碼。它的實現是基於ajax的,可以實現無刷新效果。

    網上有不少DWR的例子,但大都只是某種方法的調用,本文只在使用層面上介紹DWR,並不涉更多的技術與設計,其目的是讓初學者能夠很快的學會各種java方法在javascript中是如何調用的。

    本文以DWR 1.1 爲基礎,對於DWR 2.0,因爲還沒有正式發佈版,故不做介紹。

   1、最小配置
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

2、當我們想看DWR自動生成的測試頁(Using debug/test mode)時,可在servlet配置中加上
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
3、多個dwr.xml文件的配置
可能有幾種情況,我們一一列舉。一個servlet,多個dwr.xml配置文件;多個servlet,每個servlet對應一個或多個dwr.xml配置文件。
3.1、一個servlet,多個dwr.xml配置文件
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>config-1</param-name>
<param-value>WEB-INF/dwr1.xml</param-value>
</init-param>
<init-param>
<param-name>config-2</param-name>
<param-value>WEB-INF/dwr2.xml</param-value>
</init-param>
</servlet>
在 這種配置下,param-name的值必須以config開頭。param-name可以有>=0個。如果沒有param-name,那麼將會讀取 WEB-INF/dwr.xml。如果有大於零個param-name,那麼WEB-INF/dwr.xml文件將不會被讀取。
3.2、多個servlet,每個servlet對應一個或多個dwr.xml
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>dwr-invoker1</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>config-admin</param-name>
<param-value>WEB-INF/dwr1.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dwr-invoker1</servlet-name>
<url-pattern>/dwr1/*</url-pattern>
</servlet-mapping>
在這種情況下,我們可以根據J2EE security來控制權限,針對不同url,加不同的角色。
1、調用沒有返回值和參數的JAVA方法
1.1、dwr.xml的配置
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass"/>
<include method="testMethod1"/>
</create>
</allow>
</dwr>
<allow>標籤中包括可以暴露給javascript訪問的東西。
<create>標籤中指定javascript中可以訪問的java類,並定義 DWR 應當如何獲得要進行遠程的類的實例。 creator="new" 屬性指定 java 類實例的生成方式, new 意味着 DWR 應當調用類的默認構造函數來獲得實例,其他的還有 spring 方式,通過與 IOC 容器 Spring 進行集成來獲得實例等等。 javascript=" testClass "屬性指定javascript代碼訪問對象時使用的名稱
<param>標籤指定要公開給javascriptjava類名。
<include>標籤指定要公開給javascript的方法。不指定的話就公開所有方法。
<exclude>標籤指定要防止被訪問的方法。
1.2、javascript中調用
首先,引入javascript腳本
<script src='dwr/interface/ testClass.js'></script>
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
其中TestClass.jsdwr根據配置文件自動生成的,engine.jsutil.jsdwr自帶的腳本文件。
其次,編寫調用java方法的javascript函數
Function callTestMethod1(){
      testClass.testMethod1();
}
2、調用有簡單返回值的java方法
2.1、dwr.xml的配置
配置同1.1
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass"/>
<include method="testMethod2"/>
</create>
</allow>
</dwr>
2.2、javascript中調用
首先,引入javascript腳本
其次,編寫調用java方法的javascript函數和接收返回值的回調函數
Function callTestMethod2(){
      testClass.testMethod2(callBackFortestMethod2);
}
Function callBackFortestMethod2(data){
     //其中date接收方法的返回值
     //可以在這裏對返回值進行處理和顯示等等
alert("the return value is " + data);
}
其中callBackFortestMethod2是接收返回值的回調函數
3、調用有簡單參數的java方法
3.1、dwr.xml的配置
配置同1.1
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass"/>
<include method="testMethod3"/>
</create>
</allow>
</dwr>
3.2、javascript中調用
首先,引入javascript腳本
其次,編寫調用java方法的javascript函數
Function callTestMethod3(){
                 //定義要傳到java方法中的參數
      var data;
      //構造參數
      data = “test String”;
      testClass.testMethod3(data);
}
發佈了0 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章