從 JSP/Servlet 到 SSH 的架構演進
| 階段 | 架構特點 | 痛點 |
| Model 1 (JSP + JavaBean) | 頁面與邏輯混雜 | 維護困難、重用性低 |
| Model 2 (Servlet + JSP + JavaBean) | 初步 MVC 分離 | Servlet 承擔過多控制與跳轉邏輯 |
| Struts 1.x | 標準 MVC、ActionForm、標籤庫 | Action 膨脹、業務邏輯與持久邏輯耦合 |
| 三層架構 (Struts + Service + DAO) | 表現/業務/持久分離 | 層間強依賴(new 物件)、難以單元測試 |
| SSH 整合 | Spring IOC/AOP 統一管理依賴與事務 | — |
三大框架職責分工
- Struts(表現層):請求分發、資料封裝、視圖導航、標籤庫渲染。
- Spring(業務層):IOC 容器管理 Service/DAO 依賴、AOP 實現聲明式事務、整合 Hibernate 模板簡化資料存取。
- Hibernate(持久層):ORM 映射、物件導向查詢(HQL/Criteria)、一級/二級快取、延遲載入。
核心優勢
- 依賴倒置與控制反轉:介面程式設計,XML/註解配置注入實作,消除
new 造成的強耦合。
- 聲明式事務管理:事務邊界從 DAO 層上移至 Service 層,業務邏輯更自然,支援傳播行為與隔離級別。
- 開發效率提升:Hibernate 消除 80% 以上 JDBC 樣板碼,Struts 標籤庫簡化 JSP,Spring 模板減少樣板碼。
- 測試友善:POJO 化的 Service/DAO 易於單元測試與 Mock。
技術選型建議
Struts 歷經多年沉澱,生態成熟,是求職必備技能。但需持續關注 Spring MVC、MyBatis、Spring Boot 等現代化替代方案,保持技術敏銳度。