教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Struts2的攔截器之默認(rèn)攔截器

更新時間:2024年01月24日10時52分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  如果想對包下的Action使用相同的攔截器,則需要為該包中的每個Action都重復(fù)指定同一個攔截器,這樣寫顯然過于頻繁。為了解決此問題,Struts2中支持使用默認(rèn)攔截器,它可以對其指定的包中的所有Action都起到攔截作用。一旦為某一個包指定了默認(rèn)攔截器,并且該包中的Action未顯示指定攔截器,則會使用默認(rèn)攔截器。反之,若此包中的Action顯示的指定了某個攔截器,則該默認(rèn)攔截器將會被屏蔽。此時,如果還想使用默認(rèn)攔截器,則需要用戶手動配置該默認(rèn)攔截器的引用。

  配置默認(rèn)攔截器需要使用:

<default-interceptor-ref>

  元素,此元素為:

<package>

  元素的子元素。其語法格式如下所示:

<default-interceptor-ref name="攔截器(棧)的名稱"/>

  在上述語法格式中,name屬性的值必須是已經(jīng)存在的攔截器或攔截器棧的名稱。下面用該語法格式配置一個默認(rèn)攔截器,示例代碼如下所示:

<package name="default" namespace="/" extends="struts-default">
   <!--聲明攔截器-->
   <interceptors>
      <interceptor name="interceptor1" class="interceptorClass"/>
      <interceptor name="interceptor2" class="interceptorClass"/>
   <!--定義一個攔截器棧myStack,該攔截器棧包含兩個攔截器和一個攔截器棧-->
      <interceptor-stack name="myStack">
          <interceptor-ref name="interceptor1"/>
          <interceptor-ref name="interceptor2"/>
          <interceptor-ref name="defaultStack"/>
   </interceptors>
   <!--配置包下的默認(rèn)攔截器,既可以是攔截器,也可以是攔截器棧-->
   <default-interceptor-ref name="myStack"/>
   <action name="login" class="com.ithiema.aciton.LoginAction">
       <result name="input">/login.jsp</result>
   </aciton>
</package>

  在上述代碼中,指定了包下面的默認(rèn)攔截器為一個攔截器棧,該攔截器棧將會作用于包下所有的Action。

  注意:每一個包下只能定義一個默認(rèn)攔截器,如果需要多個攔截器作為默認(rèn)攔截器,則可以將這些攔截器定義為一個攔截器棧,再將這個攔截器棧作為默認(rèn)攔截器即可。

0 分享到:
和我們在線交談!