初學DWR開源框架

      該程序的完整代碼下載地址:http://download.csdn.net/detail/yanglun1/8779629


      首先來說明一些什麼是DWR,它能用來做什麼?


      DWR(Direct Web Remoting)是一個用於改善Web頁面與Java類交互的遠程服務器端Ajax開源框架,可以幫助開發人員開發包含Ajax技術的網站。它可以允許在瀏覽器裏的代碼調用運行在Web服務器上的java方法,就像它就在瀏覽器裏一眼。它包含兩個主要部分:一部分允許JavaScript從Web服務器上一個遵循了Ajax原則的Servlet或Action中獲取數據;另一部分是一個JavaScript庫可以幫助網站開發人員 輕鬆地利用獲取的數據來動態改變網頁的內容。


      比較一下jQuery和DWR:首先要說的就是jQuery是一個.js文件,DWR則是一個.jar文件;再有就是它們的主要功能肯定是不相同的,jQuery的特點是前端功能強大、靈活,對頁面中的DOM控制自如,但在MVC或是JSP+JAVABEAN+SERVLET模式中,前端頁面的JavaScript如果要讀取後臺Java類中的方法或屬性,此時jQuery就顯得有點蒼白無力。不過還好,DWR可以幫助我們解決這一問題。將jQuery和DWR配合起來實現struts的Ajax是不是會很完美,的確是這樣的。因爲DWR有強大的Java類屬性讀取功能,而jQuery有靈活、強大的前臺DOM操作功能,也就是DWR負責實現在JavaScript中調用遠程java方法,而獲取的數據則交給jQuery顯示出來。


      下面就針對DWR框架來做我們第一個小程序。


      首先我們需要的是兩個.jar包,一個是commons-logging-1.0.4.jar,該包是日誌控制文件,如果沒有該jar包,控制檯會報告日誌控制方面的錯誤,一個則是我們的核心jar包dwr.jar。


      還是像以往項目博客一樣,先看整體目錄結構:


      其中要解釋一點,其中的ajaxserver.jsp和index2.jsp是我之前寫的東西,在此不涉及,我也不想在項目中刪除,還請忽略。


      再接下來要做的就是配置DWR框架,就像web.xml文件一樣,我們需要在WEB-INF下創建dwr.xml配置文件。dwr.xml的配置信息如下:

<dwr>

   <allow>

      <!-- javascript指定在Javascript代碼中訪問對象時使用的名稱 -->

      <create creator="new" javascript="Hello">

         <param name="class" value="com.dwr.HelloWorldAction"></param>

      </create>

   </allow>

</dwr>

      下面是配置文件中常用的一些標籤及解釋:

      <dwr>標籤用來包含DWR所有的配置信息,處於最頂層。在其下還有以下標籤:

      <allow>標籤中可以暴露給JavaScript訪問的東西

      <create>指定JavaScript中可以訪問的java類,並定義DWR應當如何獲得要進行遠程的類的實例。creator="new"屬性指定Java類實例的生成方式,new意味着DWR應當調用類的默認構造函數來獲得實例。JavaScript="testClass"屬性指定JavaScript代碼訪問對象時使用的名字。

      <param>指定要公開給JavaScript訪問的東西

      <include>指定要公開給JavaScript的方法。不指定的話就是公開所有方法。

      <exclude>與<include>標籤相對,該標籤指定被禁止訪問的方法。

      <convertor>負責這些方法的參數和返回類型。

      <convertor>下還有兩個重要的屬性,分別是converter和match,其作用是時converter="bean"屬性指定轉換的方式採用JavaBean命名規範,match="com.dwr.TestBean"屬性指定要轉換的JavaBean的名稱。


      然後我們再看web.xml中的配置:

<welcome-file-list>

   <welcome-file>index.jsp</welcome-file>

 </welcome-file-list>

 <servlet>

  <servlet-name>dwr-invoker</servlet-name>

  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>

 </servlet>

 <servlet-mapping>

  <servlet-name>dwr-invoker</servlet-name>

  <url-pattern>/dwr/*</url-pattern>

 </servlet-mapping>

 <filter>

  <filter-name>strutsDemo01</filter-name>

  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

  <init-param>

     <param-name>debug</param-name>

     <param-value>true</param-value>

  </init-param>

 </filter>

 <filter-mapping>

  <filter-name>strutsDemo01</filter-name>

  <url-pattern>/*</url-pattern>

  </filter-mapping>


      最後我們在看一下顯示界面index.jsp中的代碼:


      在此還需要解釋一點就是,就像你們看到的,我用了兩種方式去顯示我的界面。第一種是使用了DWR的方式去設置頁面的屬性,value等,第二種方式則是用jQuery的方式,我比較推薦使用這一種,畢竟在頁面展現方面jQuery更強大一些。但是不管你頁面是怎麼展示出來的,其中獲取數據都是通過DWR來獲取的,這是毋庸置疑的。此處的Hello對應的是你在dwr.xml配置文件中配置的名字,而sayHello則是我們java文件中的一個方法。


     到此這個小程序就結束了,實現的功能也很簡單,就是在一個文本框裏輸入一些數字,然後單擊按鈕,在當前頁面顯示出你輸入的文字。對於大神來說的確有點簡單了,但對於初學者來說還是可以作爲入門基礎來看的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章