在早期的《JBuilder 2005 Servlet 高級開發》專題中,登錄模塊使用 switch.jsp 作為業務處理與頁面轉發的「中央處理器」:接收表單數據、查詢數據庫、決定跳轉目標。這違背了 JSP「專注展現邏輯」的設計初衷,導致業務邏輯與視圖耦合、分層不清、維護困難。本文展示如何引入 Struts 框架,將 switch.jsp 的職責拆解至 ActionForm、Action 與 ActionForward,實現清晰的 MVC 分層。
| switch.jsp 職責 | Struts 組件 | 說明 |
|---|---|---|
| 接收 login.jsp 表單數據 | ActionForm 機制 | 自動填充表單數據到 JavaBean,支援驗證與重置 |
| 查詢 T_USER 表、判斷合法用戶 | Action.execute() | 業務邏輯集中於 Action,可調用 Service/DAO 層 |
| 驗證失敗→fail.jsp、異常→error.jsp、成功→welcome.jsp | ActionForward 多出口切換 | 在 struts-config.xml 聲明前向,Action 僅返回邏輯名稱 |
為展示 Struts 完整開發流程,新增「圖書新增」功能,僅實現添加操作。數據庫表 T_BOOK 結構如下:
圖 4 T_BOOK 表結構
使用 JBuilder 2005 內置的 Struts Config Editor 可視化設計器,圖 5 展示新增圖書的 Struts 流程:
圖 5 新增圖書 Struts 流程
validate() 自動校驗(如 BOOK_ID 唯一性)bookStore 專案與 webModule Web 模塊,覆蓋原 Servlet 專題代碼T_BOOK 表(見代碼清單 5)-- 代碼清單 5 創建 T_BOOK 表
create table T_BOOK (
BOOK_ID VARCHAR2(10) not null,
ISBN VARCHAR2(20) not null,
BOOK_NAME VARCHAR2(50) not null,
AUTHOR VARCHAR2(50),
CREATE_DATE CHAR(8),
constraint PK_T_BOOK primary key (BOOK_ID)
);
主鍵 BOOK_ID 唯一、ISBN 與 BOOK_NAME 非空,直接決定了表單校驗規則。
後續文章將詳細講解:
book-struts-config.xml),避免團隊協作衝突BookActionForm 含數據庫級校驗的 validate() 實現bookAdd.jsp 及資源文件國際化BookInsertAction 並配置全局異常處理(SQLException → sqlFail.htm)通過本系列,您將掌握在 JBuilder 2005 中利用 Struts 可視化工具進行標準化、分層、可維護的 Web 應用開發全流程。