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

Struts 2 核心配置:struts.xml 常用元素深度解析與最佳實踐

     編輯:Java 相關知識

struts.xml 是 Struts 2 應用的核心配置文件,掌握其常用配置技巧能大幅提升專案可維護性與擴展性。本文系統梳理五大核心配置點:模組化引入、Action 別名與多方法、Action 參數注入、Result 類型選擇、全局 Result 復用。

1. 使用 <include> 實現配置模組化

隨著專案增長,單一 struts.xml 會變得臃腫。可將功能模組拆分為多個 XML,再在主文件引入:

子配置文件 (newstruts.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "https://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="demo" extends="struts-default">
        <action name="submit" class="action.MoreSubmitAction">
            <result name="save">/result.jsp</result>
            <result name="print">/result.jsp</result>
        </action>
    </package>
</struts>

主文件引入

<struts>
    <include file="newstruts.xml"/>
    <package name="test" extends="struts-default">...</package>
</struts>

注意:被引入文件必須是完整的 Struts 配置(含 DOCTYPE),<include> 是獨立解析,非單純文本合併。

優勢:結構清晰、易維護、跨專案復用。

2. Action 別名與指定執行方法

一個 Action 類可對應多個邏輯動作,通過 method 屬性指定執行方法,並給予不同 name(別名):

<action name="test" class="action.MyAction">...</action>
<action name="my" class="action.MyAction" method="my">...</action>

Action 類需提供對應方法:

public String execute() { ... }  // 對應 test
public String my() { ... }       // 對應 my

替代方案:URL 直接指定方法 actionName!method.action(無需在 XML 配置),詳見《Struts 2 教程 2》。

3. 為 Action 注入靜態參數 (<param>)

Struts 1.x 僅支援單一 parameter 屬性,Struts 2 可用 <param> 注入任意多個參數:

<action name="submit" class="action.MyAction">
    <param name="param1">value1</param>
    <param name="param2">value2</param>
    <result name="save">/result.jsp</result>
</action>

Action 類只需提供對應的 setter:

private String param1, param2;
public void setParam1(String param1) { this.param1 = param1; }
public void setParam2(String param2) { this.param2 = param2; }

框架在 execute() 前自動注入,參數值在 Action 中直接可用。

4. 選擇 Result 類型 (type 屬性)

預設 type="dispatcher"(請求轉發)。常用類型:

  • redirect:重定向 <result name="save" type="redirect">/result.jsp</result>
  • redirectAction:重定向到另一 Action
  • stream:下載文件/二進制流
  • chain:Action 鏈調用
  • freemarker/velocity/xslt:模板引擎

完整列表見 struts-default.xml 中的 <result-types> 定義。

5. 全局 Result (<global-results>)

多個 Action 共用同一結果頁(如通用錯誤頁、列表頁)時,定義於 <package> 下:

<package name="demo" extends="struts-default">
    <global-results>
        <result name="print">/result.jsp</result>
    </global-results>
    <action name="submit" class="action.MoreSubmitAction">...</action>
    <action name="my" class="action.MoreSubmitAction" method="my">...</action>
</package>

Action 未定義同名 <result> 時自動回退至全局結果。

總結

配置點關鍵標籤/屬性適用場景
模組化<include file="..."/>大型專案、跨專案共享配置
多方法/別名method、name單一 Action 類處理多種業務邏輯
參數注入<param name="">value</param>靜態配置值注入 Action
Result 類型type="redirect|stream|chain..."控制頁面跳轉/響應方式
全局 Result<global-results>共用結果頁、減少重複配置

靈活運用這些配置,能讓 Struts 2 應用結構更清晰、擴展更從容。

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