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

Struts 2 學習筆記(五):動態 Action 配置——通配符映射、驗證檔案命名、結果類型與動態結果資源

     編輯:Java 相關知識

深入解析 Struts 2 <action> 元素的動態配置能力:通配符映射 Action 名稱/類別/方法、驗證檔案命名規則、URL 匹配優先序、多種 Result 類型與動態結果資源決定機制。

通配符動態 Action:name、class、method 參數化

範例 1:方法名參數化

<action name="*Action" class="com.unmi.LoginRegistAction" method="{1}">

URL registAction.action → 執行 LoginRegistAction.regist()。

範例 2:類別與方法雙重參數化

<action name="*_*" class="actions.{1}Action" method="{2}">

URL Book_save.action → 執行 actions.BookAction.save()。

語法說明:{1}、{2} 對應 name 中 * 依序匹配(同正則分組),{0} 為完整 name 值。得益於 Struts 2 每請求建立新 Action 實例,Struts 1 無法預載所有通配符實例。

動態 Result

<action name="*">
  <result>/{1}.jsp</result>
</action>

驗證檔案命名規則與疊加機制

搜尋順序:

  1. <ActionClassName>-<ActionAliasName>-validation.xml(ActionAliasName 為 name 屬性值)
  2. <ActionClassName>-validation.xml

同時存在時規則疊加/覆蓋。例:<action name="*Action" class="com.unmi.LoginRegistAction" method="{1}">,URL registAction.action 會搜尋:

  1. LoginRegistAction-registAction-validation.xml
  2. LoginRegistAction-validation.xml

URL 匹配優先序:完全匹配 > 定義順序

若定義 name="*"、name="*Action"、name="LoginAction":

  • URL LoginAction.action → 完全匹配 LoginAction
  • URL abcAction.action → 按定義順序匹配第一個(*),而非匹配度最高(*Action)

預設 Action:<default-action-ref>

URL 無匹配 Action 時使用,配置於 <package> 內。

Result 類型詳解

  • 局部 <result>(<action> 內)vs 全域 <global-results>
  • 預設 name="success"、type="dispatcher"(JSP 轉發)

type="plaintext"

顯示頁面原始碼,中文易亂碼,用 <param name="charSet">GBK</param> 修正。

dispatcher vs redirect

dispatcher(轉發)redirect(重導向)
請求參數/屬性保留丟失
地址欄不變改變(新請求)

redirect-action:重導向至另一 Action

參數:actionName、namespace。簡寫:<result type="redirect-action">actionName</result>。等同 Struts 1 <forward redirect="true">/anotherAction.do</forward>。亦可用 redirect 寫同等形式。

動態結果資源:兩種決定方式

1. 通配符參數決定

<action name="crud_*" class="com.unmi.CrudAction" method="{1}">
  <result>/{1}.jsp</result>
</action>

URL crud_delete.action 成功 → 轉向 delete.jsp。

2. 請求參數/Action 屬性決定

<action name="..." class="com.unmi.ShowAction">
  <result>/show${user.type}</result>
</action>

Action 設定 ${user.type}="admin" → 轉向 showadmin.jsp。

對應 Struts 1

<result>/<global-results> 完全對應 Struts 1 <forward>/<global-forwards>。

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