DWR: Easy AJAX for JAVA
DWR是一個Java開源庫,幫助你實現(xiàn)Ajax網(wǎng)站。
它可以讓你在瀏覽器中的Javascript代碼調(diào)用Web服務(wù)器上的Java,就像在Java代碼就在瀏覽器中一樣。
DWR主要包括兩部分:
- 在服務(wù)器上運行的Servlet來處理請求并把結(jié)果返回瀏覽器。
- 運行在瀏覽器上的Javascript,可以發(fā)送請求,并動態(tài)改變頁面。
DWR會根據(jù)你的Java類動態(tài)的生成Javascript代碼。這些代碼的魔力是讓你感覺整個Ajax調(diào)用都是在瀏覽器上發(fā)生的,但事實上是服務(wù)器執(zhí)行了這些代碼,DWR負(fù)責(zé)數(shù)據(jù)的傳遞和轉(zhuǎn)換。
這種Java和Javascript之間的遠(yuǎn)程調(diào)用會讓DWR用戶感覺像是曾經(jīng)習(xí)慣使用的RMI或SOAP的RPC機(jī)制。而且這一過程還不需要額外的瀏覽器插件。
Java是同步的,而Ajax是異步的。所以當(dāng)你調(diào)用一個遠(yuǎn)程方法時,你要給DWR一個回調(diào)函數(shù),當(dāng)數(shù)據(jù)從網(wǎng)絡(luò)上回來時,DWR會調(diào)用這個函數(shù)。
這個圖表現(xiàn)了DWR是如何在onclick事件中改變下拉列表的內(nèi)容的。
DWR動態(tài)為服務(wù)端AjaxService類(Java)生成了一個相應(yīng)的客戶端AjaxService類(Javascript)。這個類被 eventHandler調(diào)用。DWR就會去處理整個遠(yuǎn)程調(diào)用的細(xì)節(jié),包括在Javascript和Java之間轉(zhuǎn)換參數(shù)和返回值。然后在這里例子中,它 會執(zhí)行你提供的回調(diào)函數(shù)(populateList),這個函數(shù)再利用DWR提供的工具函數(shù)來更改頁面內(nèi)容。
DWR幫你生產(chǎn)出具有很好交互性的網(wǎng)站,它提供的一些Javascript庫幫你處理DHTML,也提供了一些例子做為參考。