2012年10月3日 星期三

ZK 入門

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):
  • 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 年前製作的):

Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu






沒有留言:

張貼留言