服務器端技術棧分層
Java Web 服務器端核心組件:
- JSP/Servlet:直接處理 HTTP 請求響應
- Command:封裝業務操作
- Data Bean:數據傳輸載體
- DB Object:數據庫操作封裝
1. JavaServer Pages (JSP)
核心機制
- 請求時編譯為 Servlet,後續直接執行編譯類
- 標簽類型:
<% java代碼 %>、<%= 表達式 %>、<jsp:bean>
- 自定義標簽庫封裝業務邏輯,減少頁面 Java 代碼
優缺點
| 優點 | 缺點 |
| 所見即所得編輯、設計與開發分離、模板化動態顯示 | 首次訪問編譯慢、調試困難(編譯期錯誤定位難)、邏輯過度集中難復用 |
最佳實踐
- 僅作為視圖模板,避免業務邏輯
- 使用 JSTL/EL 替代 Scriptlet
- 頁面設計師製作靜態模板,開發者添加動態標簽
2. Servlet
核心角色
- CGI 替代品:單實例多線程處理請求,資源效率高
- 收集請求參數、調用業務邏輯、轉發至 JSP 渲染
- 支持鏈式/過濾器模式模塊化
注意事項
- 避免在 Servlet 中直接生成 HTML(維護困難)
- 首次加載慢,可啟動時預熱初始化
- 繼承通用基類復用數據庫連接等公共功能
3. Java Command 模式
設計意圖
- 封裝單一業務操作(如轉賬的扣款/入賬)
- Servlet 組合多個 Command 完成事務
- 比 Servlet 更接近純 Java 對象,測試靈活
調試挑戰
需模擬 Servlet 參數或構造測試上下文。
4. Data Bean(數據傳輸對象)
- 純屬性 + Getter/Setter,無事件機制
- 映射數據庫表結構,Schema 確定即接口穩定
- IDE Wizard 可自動生成,手寫亦簡單
5. DB Object(數據訪問對象)
- 構建動態 SQL,封裝 JDBC 操作
- 根據條件生成不同查詢語句,提高復用率
- 返回 ResultSet 或轉換為 Data Bean 集合
架構協作流程
HTTP Request
↓
Servlet (控制器)
↓
Command (業務操作)
↓
DB Object (數據訪問) ←→ Data Bean (數據載體)
↓
Servlet 設置屬性 → Forward JSP
↓
JSP (視圖渲染) → HTTP Response