struts2中关于拦截器Interceptor中的excludeMethods

struts2拦截器interceptor中的excludeMethods与includeMethods的理解:

针对MethodFilterInterceptor:

excludeMethods表示排除指定的方法,即不对标记为excludeMethods的方法进行拦截,

includeMethods表示包含指定的方法,即对标记为includeMethods的方法进行拦截,

 

在struts.xml中关于excludeMethods和includeMethods有两种实现方式,一种相当于全局,另一种相当于局部,即

<interceptors>
           <interceptor name="method" class="com.yxl.interceptor.MethodInterceptor">
                <param name="includeMethods">method1,method2</param>
           </interceptor>
</interceptors>

为全局,而

<interceptor-ref name="method">
           <param name="excludeMethods">method1,method2</param>
</interceptor-ref> 

 

例struts.xml:

……

<package name="system-default" extends="struts-default" abstract="true">
        <!-- struts2拦截器 -->
          <interceptors>
              <interceptor name="exceptionInter" class="com.ccxe.common.web.interceptor.ExceptionInterceptor"></interceptor>
            <interceptor name="loginInter" class="com.ccxe.common.web.interceptor.LoginInterceptor"></interceptor>
              <interceptor-stack name="default-stack">
                  <interceptor-ref name="defaultStack"></interceptor-ref>
                  <interceptor-ref name="exceptionInter"></interceptor-ref>
                <interceptor-ref name="loginInter">
                    <param name="excludeMethods">login,web,cloans,ufn,art,eli,cli,cap,or,invest,financing,news,anns,todetail,detail</param>
                </interceptor-ref>
              </interceptor-stack>
          </interceptors>
          <default-interceptor-ref name="default-stack"></default-interceptor-ref>

          <global-results>
              <result name="success">/success.jsp</result>
              <result name="error">/error.jsp</result>
            <result name="relogin">/redirectToLogin.jsp</result>
          </global-results>
</package>

……
为局部,若全局中的param定义为excludeMethods同样局部中的param也定义为excludeMethods,则局部中的param生 效,全局中的param无效,即被局部中的param覆盖,同样,若全局中的param定义为includeMethods同样局部中的param也定义 为includeMethods,则局部中的param生效,全局中的param无效,即被局部中的param覆盖。

当全局中的param与局部中的param不相同的时,即当全局中param为excludeMethods而局部中的param为 includeMethods和全局中的param为includeMethods而局部中param为excludeMethods,则标志为 includeMethods生效,即若是全局中的param定义为includeMethods,则全局屏蔽局部,以全局为准,反之,以局部为准。

 

转载:

http://blog.sina.com.cn/s/blog_51147aad0100eans.html

你可能感兴趣的:(struts2拦截器,Interceptor,excludeMethods,includeMethods)