ZK 入門
The following examples had been tested on Mozilla's Firefox and Microsoft's
IE. The document is provided as is. You are welcomed to use it for
non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu
請勿轉貼
看其他教材
請注意: 不知道是哪一項原因所造成的(我沒有太多的時間
測試),如果你的作業系統是 Windows 7 64 bits 版,安裝的是 Tomcat 5.5.x 版,
那麼很有可能你會碰到跟我一樣的情形:執行程式的時候會看到 commons-fileupload.jar
沒有安裝的錯誤訊息,或者執行 ZK 時看到 java.lang.NoClassDefFoundError: bsh/NameSpace 的錯誤訊息,解決的方法就是把
tomcat\webapps\xml\WEB-INF\lib\ext 中的
bsh.jar 以及 commons-fileupload.jar 移到
tomcat\shared\lib 中,就可以解決。
為什麼要 ZK?
長久以來,使用者一直希望 Web 系統的介面能夠跟傳統的視窗桌面系統一樣的好用。
從過去的發展歷程來看,這樣的趨勢是無法擋的,因此網頁的設計從靜態的 HTML
網頁、動態的 DHTML 網頁、使用 applets/Flash/ActiveX 元件, 以及一直到最近的
AJAX 技術。
Google 一直是這個概念的積極落實者,這可以從他們過去開發的 Gmail、Google
Maps、Google Suggest、以及 Google Docs 看出來。就像我在網誌中提到的:
"一旦所有視窗桌面系統可以做到的,都可以在瀏覽器中完成,那麼作業系統
的重要性也就會大大的降低了"。
在之前的教學文件 AJAX 入門中,我們了解了基本的 AJAX 程式開發的技巧。可是當我們慢慢大量
的使用 AJAX 技巧到現有的 WEB 介面的資訊系統後,我們會立即發現 AJAX 的幾個
大的缺點(參考 ZK Architecture Overview):
- AJAX 非常依賴 Javascript,可是偏偏 Javascript 在不同的瀏覽器中卻有
不相同的執行結果。
- 有部分商業邏輯(business logic)也會重複出現在瀏覽器端,容易造成維護成本的
增加。
- 有可能暴露部分的資料結構以及商業邏輯,降低系統的安全性。
- 維持客戶端以及伺服器端的資料一致性是困難的。
為了解決這些問題,有不少的方案(或者 projects)被提出來,例如 Dojo 和 Yahoo
YUI。可是從之前的教材中(Dojo Toolkit 入門 和 Yahoo! User Interface Library 入門),我們知道 Dojo 和 YUI 都能解決剛剛所提的第一個
問題,但是對於後面的三項都無能為力。
ZK 是一套 Ajax 的開發框架,而且根據 iThome online 的 臺灣軟體之光──ZK 的說法,
ZK 還是由台灣的軟體工程師所開發出來的,除了熱烈的鼓掌之外,當然要好好的
學習並發揚光大才對。
ZK 有一個全球性的首頁,也有一個
繁體中文的網頁。
簡單的說,程式開發人員會開發一個個的 ZK 網頁(副檔名為 .zul)放在伺服器;
當使用者向伺服器要求一個 zul 網頁的時候,伺服器端(或者說 "ZK Loader")會載入
該 zul 網頁,並依據其內容轉換出必要的 HTML 元件、CSS 設定、以及 Javascript
碼(稱之為 "ZK Client Engine");這些內容會被回傳到瀏覽器。
顯示在瀏覽器的內容如果包含一些互動元件(如按鈕),
而且如果使用者點選了該按鈕,則該事件會由 "ZK Client Engine" 處理,必要的
話,它還會要求伺服器端(或者說 "ZK AU Engine")進行處理並將結果回傳給
"ZK Client Engine"。這整個過程,可以由下列的簡圖表達(該圖由中興大學
資管系學生瑋婷 N 年前製作的):
Last Updated: Monday, 23-May-2011 14:38:11 CST
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu