使用 DWR、Java 和 Dojo 工具箱整合 Java 和 JavaScript
您能很快地說出多少 Java™ Web 開發架構、庫和工具箱?沒錯,數量太多,以至於很難弄清楚它們各自的功能以及哪個功能可以真正協助您解決問題。但是,如 果您從事的是 Ajax 開發,那麼您必須要知道這個庫:Direct Web Remoting (DWR)。它利用 Java 語言和 Java Web 技術大大地簡化了 Ajax 開發,並為如何無縫地將 Ajax 整合到 Java Web 應用程式設立了標準。實際上,DWR 加入了 Dojo Foundation,後者集合了許多流行的開源 Ajax 技術。在本文中,瞭解使用 DWR 輕鬆開發 Ajax。
本文是包含 3 個部分的系列文章的第 3 部分,也是最後一個部分,這個系列文章介紹了建立 Ajax 支援的應用程式所需的流行 JavaScript 庫。在 第 1 部分,您 瞭解了如何使用 Prototype 庫構建一個用來管理歌曲的 Web 應用程式。第 2 部分 討論了如何使用 Scriptaculous 庫構建一個用來管理照片的 Web 應用程式。本文側重 於向您展示如何利用 DWR 簡化 Ajax 開發。
本文使用 DWR 2.0 版本。由於使用了泛型和注釋,所以範例程式碼要求 Java 5+。應用程式範例結合使用了 MySQL 5.12 和 Tomcat 6.0.14。但是,需要能夠輕鬆切換到其他實現。應用程式還使用了 Java Persistence API (JPA) 和 OpenJPA 1.0,分別用於資料訪問和應用程式的 JPA 實現。 同樣,這也需要能夠切換到其他 JPA 實現(比如 Hibernate、Kodo 等)。本文使用了 Firefox 的 Firebug 外掛程式,因為該外掛程式是一個很棒的 Ajax 調試工具。在 參考資料 部分可以獲得這些工具的相關連結。
Direct Web Remoting (DWR) 簡介
Ajax 應用程式看上去有些神秘,幸好開發應用程式的過程還比較直觀。對於每個 Ajax 互動,必須在伺服器上建立一個端點(從從事 Web 服務的朋友那裡借用的術語),並且還要建立用戶端代碼來調用該端點。此外,還必須建立用於序列化客戶機和服 務器之間的資料流的所有代碼。這些伺服器端點可以是泛型服務,甚至可以是 REST 式的端點。但是,它們的建立通常特定於客戶機的需要。有時應該避免緊密耦合,但有 時又應該採用。對於後一種情況,DWR 是一種一攬子的解決方案。它允許您將伺服器端代碼作為 Ajax 端點公開,而所有模板都是自動產生的。現在,讓我們通過一個特定 的樣本來看看 DWR 是如何工作的。
應用程式範例:Ajax 留言板
這裡使用的應用程式範例是一個簡單的留言板。資料模型已經大大簡化,以便您能把精力放在藉助 DWR 的 Ajax 互動。我們先來研究一下應用程式的後端,看看 DWR 如 何能層疊於其上以啟用應用程式的 Ajax 功能。