SSH (Struts2、Spring、Hibernate) 曾是 Java Web 開發的「必修課」。但許多開發者只知配置、不知所以然。本文同樣以「登入」為例,梳理 Web 開發演進,指出框架解決的核心問題,並強調 MVC 概念 > 框架 API。
JSP 混寫邏輯 → Servlet 分離邏輯 (配置爆炸) → Struts 統一控制器 → Spring IoC/AOP 解耦業務層 → Hibernate ORM 簡化持久層。
| 層次 | 職責 | SSH 對應技術 | 核心解決問題 |
|---|---|---|---|
| Model | 領域資料、業務規則 | Hibernate (POJO + 映射) | 物件關聯映射、延遲載入、快取、事務邊界 |
| View | 介面渲染 | JSP + Struts2 標籤庫 / FreeMarker | 資料顯示、表單標籤、主題模板、國際化 |
| Controller | 請求分派、流程控制 | Struts2 Action + 攔截器堆疊 | 參數綁定、驗證、攔截器鏈 (登入檢查、日誌、事務)、結果類型 |
Spring 不屬於單一層,而是容器與膠水:
經典 MVC 圖只靜態展示三框連線,忽略資料流動時的複雜度:
框架正是為了解決這些「流動中的問題」而提供豐富機制 (Struts2 的 TypeConverter/Validation/Interceptor/Result Type,Spring 的 DataBinder/TransactionTemplate/HandlerExceptionResolver)。
SSH 只是特定歷史時期的產物,Spring MVC + Spring Boot + JPA/Hibernate 是現代主流。但以問題為導向、概念優於工具的思維永遠不會過時。