首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Struts2 使用攔截器統一攔截特定路徑下所有 Action

     編輯:程式設計綜合問答

問題

想對某個路徑(如 /admin/*)下的所有 Action 套用同一組攔截器,而不想逐一在 struts.xml 配置。

解決方案

  1. 定義攔截器堆疊 在 struts.xml:
<interceptors>
    <interceptor name="auth" class="com.example.AuthInterceptor"/>
    <interceptor-stack name="adminStack">
        <interceptor-ref name="auth"/>
        <interceptor-ref name="defaultStack"/>
    </interceptor-stack>
</interceptors>
  1. 使用通配符映射:
<package name="admin" namespace="/admin" extends="struts-default">
    <default-interceptor-ref name="adminStack"/> <!-- 整個 package 套用 -->
    <action name="*" class="com.example.admin.{1}Action">
        <result>/{1}.jsp</result>
    </action>
</package>

替代做法

  • 若不想建立獨立 package,可在現有 package 內對特定 Action 群組指定 interceptor-ref,但仍需逐一列出或用通配符 action name="report_*"。
  • 參考部落格:Struts2 攔截器通配符配置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved