教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Struts2的拦截器之默认拦截器

更新时间:2024年01月24日10时52分 来源:传智教育 浏览次数:

好口碑IT培训

  如果想对包下的Action使用相同的拦截器,则需要为该包中的每个Action都重复指定同一个拦截器,这样写显然过于频繁。为了解决此问题,Struts2中支持使用默认拦截器,它可以对其指定的包中的所有Action都起到拦截作用。一旦为某一个包指定了默认拦截器,并且该包中的Action未显示指定拦截器,则会使用默认拦截器。反之,若此包中的Action显示的指定了某个拦截器,则该默认拦截器将会被屏蔽。此时,如果还想使用默认拦截器,则需要用户手动配置该默认拦截器的引用。

  配置默认拦截器需要使用:

<default-interceptor-ref>

  元素,此元素为:

<package>

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

<default-interceptor-ref name="拦截器(栈)的名称"/>

  在上述语法格式中,name属性的值必须是已经存在的拦截器或拦截器栈的名称。下面用该语法格式配置一个默认拦截器,示例代码如下所示:

<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>
   <!--配置包下的默认拦截器,既可以是拦截器,也可以是拦截器栈-->
   <default-interceptor-ref name="myStack"/>
   <action name="login" class="com.ithiema.aciton.LoginAction">
       <result name="input">/login.jsp</result>
   </aciton>
</package>

  在上述代码中,指定了包下面的默认拦截器为一个拦截器栈,该拦截器栈将会作用于包下所有的Action。

  注意:每一个包下只能定义一个默认拦截器,如果需要多个拦截器作为默认拦截器,则可以将这些拦截器定义为一个拦截器栈,再将这个拦截器栈作为默认拦截器即可。

0 分享到:
和我们在线交谈!