乐鱼电竞

    教育行业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 分享到:
    和我们在线交谈!
    【网站地图】【sitemap】