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

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

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

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

好口碑IT培訓(xùn)

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

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

<default-interceptor-ref>

  元素,此元素為:

<package>

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

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

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

<package name="default" namespace="/" extends="struts-default">
   <!--聲明攔截器-->
   <interceptors>
      <interceptor name="interceptor1" class="interceptorClass"/>
      <interceptor name="interceptor2" class="interceptorClass"/>
   <!--定義一個(gè)攔截器棧myStack,該攔截器棧包含兩個(gè)攔截器和一個(gè)攔截器棧-->
      <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)攔截器為一個(gè)攔截器棧,該攔截器棧將會(huì)作用于包下所有的Action。

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

0 分享到:
和我們?cè)诰€交談!