作為J2EE開發人員,我們似乎經常關注“後端機制(backend mechanics)”。我們通常會忘記,J2EE的主要成功之處在Web應用程序方面;許多原因使得人們喜歡利用Web開發應用程序,但主要還是因為其易於部署的特點允許站點以盡可能低的成本擁有上百萬的用戶。
遺憾的是,在過去幾年中,我們在後端投入了太多的時間,而在使我們的Web用戶界面對用戶自然和響應靈敏方面卻投入不足。
本文介紹一種方法,Ajax,使用它可以構建更為動態和響應更靈敏的Web應用程序。該方法的關鍵在於對浏覽器端的JavaScript、DHTML和與服務器異步通信的組合。本文也演示了啟用這種方法是多麼簡單:利用一個Ajax框架(指DWR)構造一個應用程序,它直接從浏覽器與後端服務進行通信。如果使用得當,這種強大的力量可以使應用程序更加自然和響應靈敏,從而提升用戶的浏覽體驗。
該應用程序中所使用的示例代碼已打包為單獨的WAR文件,可供下載。
簡介
術語Ajax用來描述一組技術,它使浏覽器可以為用戶提供更為自然的浏覽體驗。在Ajax之前,Web站點強制用戶進入提交/等待/重新顯示范例,用戶的動作總是與服務器的“思考時間”同步。Ajax提供與服務器異步通信的能力,從而使用戶從請求/響應的循環中解脫出來。借助於Ajax,可以在用戶單擊按鈕時,使用JavaScript和DHTML立即更新UI,並向服務器發出異步請求,以執行更新或查詢數據庫。當請求返回時,就可以使用JavaScript和CSS來相應地更新UI,而不是刷新整個頁面。最重要的是,用戶甚至不知道浏覽器正在與服務器通信:Web站點看起來是即時響應的。
雖然Ajax所需的基礎架構已經出現了一段時間,但直到最近異步請求的真正威力才得到利用。能夠擁有一個響應極其靈敏的Web站點確實激動人心,因為它最終允許開發人員和設計人員使用標准的HTML/CSS/JavaScript堆棧創建“桌面風格的(desktop-like)”可用性。
通常,在J2EE中,開發人員過於關注服務和持久性層的開發,以至於用戶界面的可用性已經落後。在一個典型的J2EE開發周期中,常常會聽到這樣的話,“我們沒有可投入UI的時間”或“不能用HTML實現”。但是,以下Web站點證明,這些理由再也站不住腳了:
BackPack Google Suggest Google Maps PalmSphere所有這些Web站點都告訴我們,Web應用程序不必完全依賴於從服務器重新載入頁面來向用戶呈現更改。一切似乎就在瞬間發生。簡而言之,在涉及到用戶界面的響應靈敏度時,基准設得更高了。
定義Ajax
Adaptive Path公司的Jesse James Garrett這樣定義Ajax:
Ajax不是一種技術。實際上,它由幾種蓬勃發展的技術以新的強大方式組合而成。Ajax包含:
基於CSS標准的表示;使用Document Object Model進行動態顯示和交互;使用XMLHttpRequest與服務器進行異步通信;使用JavaScript綁定一切。
這非常好,但為什麼要以Ajax命名呢?其實術語Ajax是由Jesse James Garrett創造的,他說它是“Asynchronous JavaScript + XML的簡寫”。