編者按:當 Chuck Cavaness 所在公司決定採用 Struts 框架後,他花費數月研究如何構建企業級應用。本文分享其寶貴實戰經驗,對正在評估或使用 Struts 的 Java Web 開發者極具參考價值。
優秀框架應滿足可預見需求,並在適當處提供擴展點。Struts 提供通用架構讓開發者專注業務邏輯,同時開放近乎所有配置類、ActionServlet、RequestProcessor 甚至異常處理機制(Struts 1.1 新增)供客製化。
然而,擴展有代價。Struts 核心與工具包已內建大量功能,盲目擴展易導致重複代碼、增加維護負擔。原則:先確認現有功能無法滿足,再編寫擴展代碼。基於成熟框架開發能大幅減少測試錯誤、縮短週期、節省資源。
成熟經驗建議在代碼外部透過配置定義邏輯流程(如 EJB 安全/事務、JMS 關聯)。Struts 從初版即採用配置檔驅動運行行為,1.1 版更內建 ExceptionHandler 處理 Action 運行時錯誤,並允許自訂實作。
org.apache.struts.action.ExceptionHandler。execute()(最常用)或 storeException() 方法。execute() 簽名包含原始異常等參數,回傳 ActionForward 決定異常處理後導向。struts-config.xml 宣告自訂處理器與異常對應規則。預設處理器會產生 ActionError 存入適當 scope,JSP 可直接用錯誤標籤提示用戶。若需記錄日誌、發送通知等進階邏輯,自訂 ExceptionHandler 即可優雅實現。