首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

深度解析:Java 三大框架 SSH 與 MVC 設計模式的本質關係

     編輯:Java 綜合教學

框架只是工具,MVC 才是靈魂:從 JSP/Servlet 到 SSH 的演進邏輯

許多初學者盲目背誦 Struts2、Spring、Hibernate(SSH)API,卻不知其所以然。本文以最簡單的「用戶登錄」為例,串聯 Web 開發演進史:從 Model 1(JSP 混寫 Java)→ Model 2(Servlet 分離)→ Struts 1/2(MVC 框架)→ Spring MVC(註解驅動),揭示框架本質是為了解決特定問題而誕生的「半成品」,而 MVC 設計模式才是貫穿始終的核心架構思想。

一、 歷史演進:我們為什麼需要框架?

階段 1:Model 1 - JSP 大雜燴

<%
String name = request.getParameter("name");
String password = request.getParameter("password");
UserHandler handler = new UserHandler();
if (handler.authenticate(name, password)) { %>
    <p>登錄成功</p>
<% } else { %>
    <p>登錄失敗</p>
<% } %>

痛點:邏輯與視圖耦合、代碼不可復用、維護困難、事務/日志無統一支持。

階段 2:Model 2 - Servlet 做控制器

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
        String name = req.getParameter("name");
        String pwd = req.getParameter("password");
        UserHandler handler = new UserHandler();
        String msg = handler.authenticate(name, pwd) ? "成功" : "失敗";
        req.setAttribute("message", msg);
        req.getRequestDispatcher("/result.jsp").forward(req, resp);
    }
}

痛點:每個 Servlet 需在 web.xml 配置映射,配置爆炸;邏輯仍分散在各 Servlet 中。

階段 3:Struts 1/2 - 成熟 MVC 框架

Struts 通過 struts-config.xml/struts.xml 集中管理 URL 到 Action 的映射,實現請求分發、數據封裝、類型轉換、驗證、國際化等通用功能,極大減輕樣板代碼。

二、 MVC 三要素本質剖析

無論技術如何演進,Web 應用永遠離不開三個核心要素:

MVC 角色職責登錄案例體現
Model (模型)數據邏輯、業務規則、持久化User 實體、UserHandler/Service、DAO
View (視圖)數據展示、用戶交互界面login.jsp、result.jsp、HTML/CSS/JS
Controller (控制器)接收請求、協調 Model/View、流程控制LoginServlet、Struts Action、Spring MVC @Controller

三、 MVC 圖景下的隱性挑戰(框架解決的具體問題)

經典 MVC 圖忽略了數據流動中的具體難題,框架正是針對這些難題提供標準化方案:

  1. 參數綁定與類型轉換:HTTP 參數全是 String,如何自動轉為 Integer、Date、List 等對象?
  2. 數據校驗:前後端如何統一校驗規則(JSR-303 Bean Validation)?
  3. 視圖渲染:Model 對象如何高效轉為 HTML/JSON/XML?
  4. URL 路由分發:一個請求如何精準映射到 Controller 方法?
  5. 異常統一處理:Controller 如何優雅處理 Service 拋出的異常?
  6. 事務/安全/日志橫切關注點:如何不侵入業務代碼實現聲明式事務、權限攔截、AOP 日志?

四、 正確的學習心法:為了解決問題而學框架

「框架不重要,概念是王道。只要深刻理解 MVC 概念,框架對你來說只是一個 jar 包而已。」

  • 不要為了學框架而學框架,要帶著問題去學:這個框架解決了什麼問題?怎麼解決的?優缺點是什麼?
  • 掌握核心抽象:IoC/DI(依賴倒置)、AOP(切面)、ORM(對象關係映射)、MVC(分層)。
  • 理解源碼設計模式:模板方法、策略、代理、工廠、觀察者等在框架中的實戰應用。

五、 SSH 核心定位速查表

  • Struts2:Web 層 MVC 框架,專注請求處理、數據封裝、視圖跳轉(現多被 Spring MVC 替代)。
  • Spring:容器核心,提供 IoC 管理 Bean 生命周期、AOP 實現橫切邏輯、事務管理、集成各類模板。是整個應用的粘合劑。
  • Hibernate:ORM 框架,負責對象與關係表映射、HQL/Criteria 查詢、一級/二級緩存、延遲加載。

六、 總結

技術棧會過時(Struts2 已淡出,Spring Boot/Cloud 成主流),但MVC 分層思想、IoC 容器原理、AOP 切面編程、ORM 映射機制等核心概念永不過時。程序員的競爭力在於「透過現象看本質」的架構思維,而非 API 調用熟練度。

MVC 經典架構圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved