MVC 框架是建構模組化、關注點分離應用的經證實方法。Struts 是 Java 世界最知名的開源 MVC 實現。近期 Struts 整合 Tiles 視圖元件框架,強化基於元件開發支援,提升可重用性與一致性。本文說明 Struts+Tiles 為何是 Web 應用開發最佳工具組合,並示範如何起步 (涵蓋 Struts 0.9 之後的變更)。
早期 Web 開發混雜 HTML、邏輯、資料,維護困難。JSP 與標籤庫改善但仍有缺陷:控制流程分散、錯誤處理笨拙、表單值保留繁瑣。Struts 解決這些問題:集中控制流、自動化表單處理、分離業務邏輯與視圖。
TOMCAT_HOME)STRUTS_INSTALL)struts-tiles-examples.tgz 解壓得 ex1、ex2、ex3https://localhost:8080/examplescd EX1_INSTALL; ant deployhttps://localhost:8080/ex1cd EX2_INSTALL; ant deployhttps://localhost:8080/ex2tiles-components 存放視圖元件、tiles-layouts 存放佈局、tiles-defs.xml 定義元件組合DynaActionForm:無需撰寫 Java 類別即可在 XML 定義表單屬性,自動建立 Beanforward 目標可指定 Tile 定義名稱 (如 tile.profileInput),邏輯名稱取代物理路徑<definition name="rootLayout" path="/tiles-layouts/rootLayout.jsp"> 定義基礎佈局<tiles:insert attribute="panel1"/> 插入元件<definition name="tile.profileInput" extends="rootLayout"> 繼承基礎佈局並覆寫特定區域 (如 panel3)tiles-defs.xml rootLayout 定義加入 <put name="panel4" value="/tiles-components/panel4.jsp"/>rootLayout.jsp 對應位置加入 <tiles:insert attribute="panel4"/>
| 優點 | 說明 |
|---|---|
| 維護容易、模組化程度高 | Tiles 輕鬆增減重組視圖元件;Struts 同樣管理行為與邏輯 |
| 公共輸入輸出預建方案 | Struts 自動處理表單與錯誤;Tiles 便利組裝輸出窗格 |
| 業務邏輯與 UI 並行開發 | Java 開發與圖形設計分離 |
| 集中映射管理 | struts-config.xml、tiles-defs.xml 提供全局視野 |
| 缺點 | 說明 |
| 學習曲線陡峭 | 檔案多、配置複雜,小專案額外負擔較大 |
validator.xml 宣告式驗證 (required、mask、date、email 等),減少手寫驗證碼