DWR(Direct Web Remoting)是一個開源的類庫,可以幫助開發(fā)Ajax技術(shù)。它可以允許在瀏覽器里的代碼使用運(yùn)行在Web服務(wù)器上的Java函數(shù),就像它在瀏覽器里一樣。
DWR包含兩個主要的部分,其一是運(yùn)行在瀏覽器客戶端的Javascript,這部分被用來與服務(wù)器通信,并更新頁面內(nèi)容;其二是運(yùn)行在服務(wù)器端的Java Servlet,這部分被用來處理請求并將響應(yīng)結(jié)果發(fā)送給瀏覽器。
DWR采取了一種動態(tài)生成基于Java類的Javascript代碼的新方法來實現(xiàn)和處理Ajax。這樣Web開發(fā)人員就可以在Javascript里像使用瀏覽器的本地代碼一樣使用Java代碼,而實際上這些Java代碼是運(yùn)行在服務(wù)器端并且可以自由訪問Web 服務(wù)器資源的。出于安全的考慮,Web開發(fā)者必須適當(dāng)?shù)嘏渲茫瑳Q定哪些Java類可以安全地被外部使用。
這個從Java到Javascript的遠(yuǎn)程功能方法給DWR的用戶帶來了非常傳統(tǒng)的RPC機(jī)制,就像RMI或者SOAP一樣,而且擁有無插件運(yùn)行在Web上的優(yōu)勢。
DWR認(rèn)為瀏覽器/服務(wù)器協(xié)議沒有那么重要,其更傾向于保證編程界面的簡單自然。對此最大的挑戰(zhàn)就是把Ajax的異步特性和正常Java方法調(diào)用的同步特性相結(jié)合。在異步模式下,結(jié)果數(shù)據(jù)在開始調(diào)用之后的一段時間之后才可以訪問。DWR解決了這個問題,允許Web開發(fā)人員使用一個特殊的方法參數(shù)來指定一個函數(shù),以便在數(shù)據(jù)返回后回調(diào)此函數(shù)。
使用DWR可以有效地從應(yīng)用程序代碼中把Ajax的全部請求-響應(yīng)循環(huán)消除掉。這意味著,客戶端代碼再也不需要直接處理XMLHttpRequest對象或者服務(wù)器的響應(yīng),不再需要編寫對象的序列化代碼或者使用第三方工具才能把對象變成XML,甚至不再需要編寫servlet代碼把Ajax請求調(diào)整成對Java對象的調(diào)用。
DWR是作為Web應(yīng)用程序中的servlet部署的。可以把它看做一個黑盒子,這個servlet有兩個主要作用:首先,對于公開的每個類,DWR動態(tài)地生成包含在Web頁面中的Javascript。生成的Javascript包含存根函數(shù),代表Java類上的對應(yīng)方法并在幕后執(zhí)行XML HttpRequest。這些請求被發(fā)送給DWR,這時它的第二個作用就是把請求翻譯成服務(wù)器端Java對象上的方法調(diào)用,并把方法的返回值放在servlet響應(yīng)中發(fā)送回客戶端,編碼成Javascript。DWR還提供了幫助執(zhí)行常見的用戶界面任務(wù)的Javascript工具函數(shù)。
?
DWR注意: 版本對DWR很重要
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
