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

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