DWR(Direct Web Remoting)是一個WEB遠程調用架構.利用這個架構可以讓AJAX開發變得很簡單.利用DWR可以在用戶端利用JavaScript直接調用服務 端的Java方法並傳回值給JavaScript就好像直接本地用戶端調用一樣(DWR根據Java類來動態產生JavaScrip代碼).它的最新版本 DWR0.6添加許多特性如:支援Dom Trees的自動設定,支援Spring(JavaScript遠程調用spring bean),更好瀏覽器支援,還支援一個可選的commons-logging日記操作.
DWR: Easy AJAX for JAVA
DWR是一個Java開源庫,協助你實現Ajax網站。
它可以讓你在瀏覽器中的Javascript代碼調用Web伺服器上的Java,就像在Java代碼就在瀏覽器中一樣。
DWR主要包括兩部分:
- 在伺服器上啟動並執行Servlet來處理請求並把結果返回瀏覽器。
- 運行在瀏覽器上的Javascript,可以發送請求,並動態改變頁面。
DWR會根據你的Java類動態產生Javascript代碼。這些代碼的魔力是讓你感覺整個Ajax調用都是在瀏覽器上發生的,但事實上是伺服器執行了這些代碼,DWR負責資料的傳遞和轉換。
這種Java和Javascript之間的遠程調用會讓DWR使用者感覺像是曾經習慣使用的RMI或SOAP的RPC機制。而且這一過程還不需要額外的瀏覽器外掛程式。
Java是同步的,而Ajax是非同步。所以當你調用一個遠程方法時,你要給DWR一個回呼函數,當資料從網路上回來時,DWR會調用這個函數。
這個圖表現了DWR是如何在onclick事件中改變下拉式清單的內容的。
DWR動態為服務端AjaxService類(Java)產生了一個相應的用戶端AjaxService類(Javascript)。這個類被 eventHandler調用。DWR就會去處理整個遠程調用的細節,包括在Javascript和Java之間轉換參數和傳回值。然後在這裡例子中,它 會執行你提供的回呼函數(populateList),這個函數再利用DWR提供的工具函數來更改頁面內容。
DWR幫你生產出具有很好互動性的網站,它提供的一些Javascript庫幫你處理DHTML,也提供了一些例子做為參考。
要查看如何開始用DWR可以看開始指南和下載DWR
不太喜歡這樣的方式,用戶端不應該直接調用服務端的方法,這樣用戶端和服務端的耦合性增大了</