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

Struts 在財務系統中的 MVC 實踐:架構設計與核心組件解析

     編輯:Java 相關知識

項目背景與挑戰

財務系統業務邏輯複雜、需求變更頻繁 (結算、返款、賬簿查詢、科目維護等)。早期過程式開發導致數據層 SQL 與表示層 HTML 混雜,維護極其困難。引入 Struts 實現 MVC 分層,解決耦合問題。

MVC 在 Struts 中的具體映射

MVC 角色Struts 實現組件職責
ModelJavaBean / EJB 組件封裝業務邏輯、數據訪問、狀態管理
ViewJSP + Struts 標簽庫 / 自定義標簽數據展示、用戶交互,無業務邏輯
ControllerActionServlet + Action 類請求分發、流程控制、Model 調用、視圖選擇

配置文件:web.xml (標準部署描述符) + struts-config.xml (Struts 專用路由/映射配置)

客戶結算業務流程實戰

頁面流轉

index.jsp (菜單) 
  → 客戶結算頁面 (填寫:客戶名/銷售單編碼/支付方式/收款信息) 
  → 提交 → CtmBAction.execute() 
    → 成功 → 結算單頁面 
    → 失敗 → 錯誤信息頁面

核心組件協作時序

  1. ActionServlet 接收請求 → process() → 選擇模塊、載入配置/消息資源
  2. 預處理 → 創建 CtmBAction 實例 → 調用 execute()
  3. execute() 調用 業務代理 (CtmBEJBDelegateImpl) → 查找 JNDI ejb/CtmBEJB → 調用 EJB 業務方法
  4. EJB 返回領域對象 (BO) → Action 封裝結果 → 返回 ActionForward
  5. ActionServlet 根據 Forward 轉發/重定向到目標 JSP

多層架構設計

[Web層: Struts] → [業務代理層] → [EJB容器: Session Bean] → [業務對象層 BO] → [DAO層: OJB持久化框架] → [數據庫]

關鍵設計模式應用

  • 業務代理模式:CtmBEJBDelegateImpl 隔離 Web 層與 EJB 查找/調用細節,降低耦合
  • 接口隔離:ICtmB 定義 EJB 業務方法,客戶程序面向接口編程
  • 領域模型 (BO):CustomerBO, SalesSlipBO, BalancingSlipBO, AccountsReceivableBO, PreReceivingBO, CashAccountBO, BankAccountBO 等,豐富領域邏輯
  • DAO 模式 (OJB):持久化框架實現,剝離業務邏輯與數據庫操作,支持增刪改查、對象關係映射

BO 關聯關係 (核心領域模型)

  • 客戶 1:N 銷售單
  • 銷售單 1:1 結算單
  • 結算單關聯:應收款賬 / 預收款賬 / 現金賬 / 銀行賬 (支付方式決定)
  • 賬戶類屬性:餘額、交易記錄、對賬方法等

Struts 核心優勢體現

  1. 分層清晰:JSP 零業務代碼,Action 僅做流程控制,EJB 專注業務邏輯
  2. 表單自動綁定:CtmBForm (ActionForm) 屬性與表單字段映射,validate() 完成格式/業務規則校驗 (如金額非空、編碼格式)
  3. 配置驅動流程:struts-config.xml 集中管理路由、Forward、FormBean 作用域,修改流程無需改 Java 代碼
  4. 易於維護升級:業務變更集中於 EJB/BO/DAO 層,Web 層幾乎不動;新增支付方式只需擴展 BO/DAO
  5. 標簽庫提效:Struts HTML/Bean/Logic 標簽簡化 JSP 開發

總結

Struts 為大型 Web 應用提供了成熟的 MVC 框架結構。財務系統案例證明:通過 ActionServlet 統一控制、ActionForm 自動綁定驗證、Action 委派業務代理調用 EJB、BO 豐富領域模型、OJB 透明持久化,實現了表現層與業務層的徹底分離。業務需求變更時,僅需調整 Model 層組件,系統擴展性與可維護性顯著提升。

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