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

Struts 1.x 實戰 MVC:ActionMapping、ActionForm 與標籤庫完整指南

     編輯:Java 相關知識

Struts MVC 架構流程

  1. 使用者請求 → ActionServlet (Front Controller)。
  2. ActionServlet 依 struts-config.xml 中的 <action-mapping> 找到對應 Action 類別。
  3. Action 執行商業邏輯 (呼叫 EJB/DAO/Service),結果存入 ActionForm。
  4. Action 回傳 ActionForward,導向 JSP 視圖。
  5. JSP 透過 Struts 標籤庫渲染動態內容。

核心組件詳解

ActionServlet — 指揮中樞

  • 啟動時讀取 struts-config.xml 建立映射表。
  • 可擴展自訂 ActionServlet 注入應用級初始化邏輯。

ActionMapping — 請求路由規則

<action-mappings>
  <action path="/login" type="com.app.LoginAction" name="loginForm" scope="request">
    <forward name="success" path="/welcome.jsp"/>
    <forward name="failure" path="/login.jsp"/>
  </action>
</action-mappings>
  • path:請求路徑;type:Action 實作類;name:對應 Form Bean;scope:request/session。

ActionForm — 表單資料載體與 Session 狀態

  • 繼承 org.apache.struts.action.ActionForm,提供 reset()、validate() 鉤子。
  • 框架自動將 HTTP 參數填入 Form Bean 屬性,再傳給 Action.execute()。
  • Session 範圍 Form Bean 可跨請求保持狀態 (如購物車)。

Action — 處理請求的命令物件

public class LoginAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest req, HttpServletResponse res) {
        LoginForm lf = (LoginForm) form;
        User user = UserService.authenticate(lf.getUsername(), lf.getPassword());
        if (user != null) {
            req.getSession().setAttribute("user", user);
            return mapping.findForward("success");
        }
        return mapping.findForward("failure");
    }
}

Model 層 — JavaBean / EJB / POJO

Struts 不強制 Model 實作介面,建議使用 POJO Service + DAO,Action 僅負責協調與轉發。

四大標籤庫加速視圖開發

標籤庫 URI功能焦點常用標籤
/tags/struts-html表單、連結、圖片、JavaScript 整合<html:form>, <html:text>, <html:submit>
/tags/struts-beanBean 屬性輸出、迭代、定義變數<bean:write>, <bean:iterate>, <bean:define>
/tags/struts-logic條件判斷、迴圈、流程控制<logic:present>, <logic:iterate>, <logic:redirect>
/tags/struts-template頁面模板、版面複用<template:insert>, <template:put>

JSP 頂部宣告:<%@ taglib uri="/tags/struts-html" prefix="html" %>

環境建置與部署清單

  1. JDK 1.3+、Servlet 2.2+/JSP 1.1+ 容器 (Tomcat 4/5 推薦)。
  2. JAXP 1.1+ XML 解析器 (Xerces 内建)。
  3. servlet.jar、jdbc2_0-stdext.jar (DataSource 支援)。
  4. 將 struts.jar、commons-*.jar 放入 WEB-INF/lib。
  5. 將 struts-*.tld 放入 WEB-INF,於 web.xml 宣告 <taglib>。
  6. 配置 web.xml:ActionServlet 與 *.do 映射。
  7. 建立 struts-config.xml 定義 ActionMapping、Form Bean、Forward、DataSource。

優缺點總評

  • ✅ 集中式流程控制、職責分離、標籤庫豐富、非程式設計師易維護 JSP。
  • ⚠️ 設定檔龐大時難維護、ActionForm 重複驗證邏輯、Action 易變臃腫 (建議委派 Command)。
  • 🔄 Struts 2 / Spring MVC 提供更靈活的攔截器、AOP、註解驅動,新專案建議評估遷移。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved