out.println("<html>...")),維護極其痛苦。<% ... %>),界面與邏輯混雜。┌─────────────────────┐
│ 表現層 │ ← JSP / Servlet (Controller) / HTML / JS
│ (View / Controller)│
├─────────────────────┤
│ 業務層 │ ← Service (業務邏輯、事務控制)
│ (Service) │
├─────────────────────┤
│ 數據層 │ ← DAO (數據庫增刪改查) + JavaBean (實體類)
│ (DAO / Entity) │
└─────────────────────┘
JavaBean 是遵循特定約定的 Java 類,作為各層間數據傳輸載體:
private),封裝數據。getXxx/setXxx),供外部訪問/修改。Serializable 接口(支持分布式傳輸/會話序列化)。
| 層次 | 職責單一性 | 可維護性 | 可測試性 | 復用性 |
|---|---|---|---|---|
| Servlet (Controller) | 只負責接收請求、調用 Service、選擇視圖 | 高 | 易 Mock Service 單測 | 控制邏輯復用 |
| Service (Business) | 核心業務規則、事務邊界 | 高 | 純 Java 類,極易單元測試 | 跨控制器復用 |
| DAO (Data Access) | SQL 構建、數據庫交互細節 | 高 | 可 Mock 數據源測試 | 數據訪問邏輯復用 |
| JSP (View) | 純模板渲染,無業務代碼 | 高 | 前端獨立開發 | 模板復用 |
這種分層思想不僅是 Java Web 的基石,也是 Spring、MyBatis 等主流框架設計的核心依據。理解其演進歷程,有助於在微服務時代做出更合理的模塊劃分決策。