DWR學習筆記一

參看http://getahead.org/

一、DWR簡介

DWR是一個開源的java包,可以使瀏覽器中的代碼使用web服務器中java類的方法,就像這個方法就是在瀏覽器中一樣。

DWR包括兩個部分:一個運行在服務器端的Java Servlet,負責處理瀏覽器的請求併發送反饋給瀏覽器;另一個是運行在瀏覽器端的Java Script,負責發生請求並動態修改web頁面。

DWR的原理就是基於java類動態產生javascript代碼,AJAX使得服務器端java類的方法好像是在是在瀏覽器端執行的,這種類似傳統RPC機制,就很象RMI,或SOAP。而且它的優勢是在web上運行但不需要瀏覽器插件。


二、步驟:
1.下載dwr.jar,放在WEB-INF/lib 或其他合適地方
2.修改web.xml,增加:
<servlet></servlet>

<servlet></servlet>

  1. <servlet>  
  2.   <servlet-name>dwr-invokerservlet-name>  
  3.   <display-name>DWR Servletdisplay-name>  
  4.   <servlet-class>uk.ltd.getahead.dwr.DWRServletservlet-class> //如果是DWR 2.x,改成org.directwebremoting.servlet.DwrServlet   
  5.   <init-param>  
  6.      <param-name>debugparam-name>  
  7.      <param-value>trueparam-value>  
  8.   init-param>  
  9. servlet>  
  10.   
  11. <servlet-mapping>  
  12.   <servlet-name>dwr-invokerservlet-name>  
  13.   <url-pattern>/dwr/*url-pattern>  
  14. servlet-mapping>  


  3.創建dwr.xml

如:<servlet-name></servlet-name>

  1.     "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"   
  2.     "http://www.getahead.ltd.uk/dwr/dwr10.dtd">  
  3.   
  4. <dwr>  
  5.   <allow>  
  6.     <create creator="new" javascript="JDate"> //JS使用的類名 
  7.       <param name="class" value="java.util.Date"/>  //實際java的類
  8.     <create>  
  9.     <create creator="new" javascript="Demo" scope="page/request/session/application"> //可以設置對象保存的位置
  10.       <param name="class" value="your.java.Bean"/>  
  11.     create>  
  12.   allow>  
  13. dwr>  

 這個XML文件是定義DWR可以創建什麼類並可以被JS遠程調用。

 注意不要使用保留字,注意不要讓一個方法負擔過重。

4.訪問URL:

http://localhost:8080/[YOUR-WEBAPP]/dwr/

 可以看到dwr.xml中定義的類,點擊某個類,可以看到這個類有哪些方法可以調用。以及在js中需要include哪個js,還可以在這個頁面上測試各個方法。

一般jsp頁面中需要加入: <script type="text/javascript" src="&lt;a href=&quot;http://envysiongdc.boldtech.com/dwr/engine.js&quot;&gt;/dwr/engine.js&lt;/a&gt;"></script>  <script type="text/javascript" src="&lt;a href=&quot;http://envysiongdc.boldtech.com/dwr/interface/DwrService.js&quot;&gt;/dwr/interface/DwrService.js&lt;/a&gt;"></script>  <script type="text/javascript" src="&lt;a href=&quot;http://envysiongdc.boldtech.com/dwr/util.js&quot;&gt;/dwr/util.js&lt;/a&gt;"></script>       

js 代碼
  1. <script type='text javascript' src="/dwr/&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;interface&lt;/span&gt;&lt;span&gt;/Demo.js"></script>  //這個是用戶自定義的dwr服務動態產生的js 
  2. <script type='text javascript' src="/dwr/engine.js"></script>   //這個是必須的
    <script type='text javascript' src="/dwr/util.js"></script>   //這是可選的
  3.   

5.寫服務端的JAVA類

如上面的例子即寫一個your.java.Bean類

6.寫客戶端的js

js 代碼
<script type=< span="">"text/javascript">    window.onload = function() {      functon callback(str) {        $('output').innerHTML = str;      }      Demo.sayHelloWorldTo("Java", callback);    }    </script>  

7.一個簡單的完整的代碼例子

 

  1. public class Remote {   
  2.     public String getData(int index) { ... }   
  3. }   
js 代碼
  1. function handleGetData(str) {   
  2.   alert(str);   
  3. }   
  4.   
  5. Remote.getData(42, handleGetData);   

 

      
發佈了5 篇原創文章 · 獲贊 0 · 訪問量 2521
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章