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

Struts 1.x 系列教程(21):MappingDispatchAction 依路徑對應多方法

     編輯:Java 相關知識

前言

MappingDispatchAction 是 DispatchAction 子類,特色在於不依賴請求參數指定方法,而是將每個 Action 路徑直接對應到一個具體方法。適用於「不同 URL 執行不同邏輯,但共用同一 Action 類別」的情境。

Action 類別實作

package action;
import org.apache.struts.actions.MappingDispatchAction;
import javax.servlet.http.*;
import org.apache.struts.action.*;

public class MyMappingDispatchAction extends MappingDispatchAction {
    // 對應 /pdf.do
    public ActionForward pdf(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        // 生成 PDF 邏輯
        return mapping.findForward("success");
    }

    // 對應 /html.do
    public ActionForward html(ActionMapping mapping, ActionForm form,
                              HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        // 生成 HTML 邏輯
        return mapping.findForward("success");
    }

    // 預設處理(無對應路徑時)
    protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
                                        HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        // 預設邏輯
        return mapping.findForward("default");
    }
}

struts-config.xml 配置

<action-mappings>
    <action path="/pdf"
            type="action.MyMappingDispatchAction"
            parameter="pdf" />
    <action path="/html"
            type="action.MyMappingDispatchAction"
            parameter="html" />
</action-mappings>
  • path:請求路徑(對應 /pdf.do、/html.do)。
  • parameter:指定要呼叫的方法名稱(pdf、html)。
  • 兩個 <action> 共用同一 type 類別。

請求對應關係

比較:DispatchAction 族群

請求 URL呼叫方法
https://host/app/pdf.dopdf()
https://host/app/html.dohtml()
其他路徑對應此 Action 類別unspecified()
類別方法選擇依據適用情境
DispatchAction請求參數(如 ?method=pdf)單一表單多動作、REST 風格
LookupDispatchAction請求參數 + 屬性檔映射多語言按鈕值映射
MappingDispatchActionAction 路徑(path)不同 URL 對應不同業務邏輯
EventDispatchAction提交按鈕 property 屬性單一表單多提交按鈕

總結

MappingDispatchAction 讓開發者以「一個路徑對應一個方法」的直覺方式組織程式碼,配置簡潔,適合將相關但獨立的業務操作(如匯出 PDF/HTML/Excel)集中在同一 Action 類別中管理。

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