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?
安裝 ZK 3.6.x 安裝 ZK 5.0.x
第一個範例:Hello World
待辦事項管理
使用 HSQLDB 資料庫以及 DAO 架構
存貨管理系統
使用 MySQL 資料庫
待辦事項管理 (Part I)存貨管理系統 (Part I)
待辦事項管理 (Part II)存貨管理系統 (Part II)
待辦事項管理 (Part III:查詢)存貨管理系統 (Part III:查詢)
待辦事項管理 (Part IV:新增)存貨管理系統 (Part IV:新增)
待辦事項管理 (Part V:修改)存貨管理系統 (Part V:修改)
待辦事項管理 (Part VI:刪除)存貨管理系統 (Part VI:刪除)
第三個範例:ZK 與 Session


為什麼要 ZK?

長久以來,使用者一直希望 Web 系統的介面能夠跟傳統的視窗桌面系統一樣的好用。 從過去的發展歷程來看,這樣的趨勢是無法擋的,因此網頁的設計從靜態的 HTML 網頁、動態的 DHTML 網頁、使用 applets/Flash/ActiveX 元件, 以及一直到最近的 AJAX 技術。

Google 一直是這個概念的積極落實者,這可以從他們過去開發的 Gmail、Google Maps、Google Suggest、以及 Google Docs 看出來。就像我在網誌中提到的: "一旦所有視窗桌面系統可以做到的,都可以在瀏覽器中完成,那麼作業系統 的重要性也就會大大的降低了"。

在之前的教學文件 AJAX 入門中,我們了解了基本的 AJAX 程式開發的技巧。可是當我們慢慢大量 的使用 AJAX 技巧到現有的 WEB 介面的資訊系統後,我們會立即發現 AJAX 的幾個 大的缺點(參考 ZK Architecture Overview):

為了解決這些問題,有不少的方案(或者 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