方法拦截器

发表时间:2017-05-16 15:44:26 浏览量( 26 ) 留言数( 0 )

学习目标:

1、了解方法拦截器拦截器


学习过程:

    方法拦截器拦截器可以只拦截部分方法。你可以使用灵活的使用通配符,拦截你需要拦截的action的方法。

一、定义方法拦截器的方法

    实现MethodFilterInterceptor方法。代码如下:

public class MyMethodInterceptro extends MethodFilterInterceptor{
    @Override
    protected String doIntercept(ActionInvocation ai) throws Exception {
        System.out.println("MyMethodInterceptro方法拦截器之前");
        String result=ai.invoke();
        System.out.println("MyMethodInterceptro方法拦截器之后");
        return result;
    }
}

二、配置方法拦截器

和配置普通的拦截器不一样。在action中引用该拦截器时,我们可以定了param属性

       <param name="name">方法1,方法2</param>

    name一般使用excludeMethods(表示不包括的方法),includeMethods(包括的方法)两个值。如下面的代码,表示拦截addGoods方法。

<!-- 方法拦截器 -->
<interceptor-ref name="mymethod">
    <!-- 定义拦截的方法 -->
    <param name="includeMethods">addGoods,uselist</param>
</interceptor-ref>

不拦截就这样配置

<!-- 方法拦截器 -->
<interceptor-ref name="mymethod">
    <!-- 定义拦截的方法 -->
    <param name="excludeMethods">addGoods</param>
</interceptor-ref>

如果都配置了,拦截器会拦截该方法,也就是说includeMethods的优先级别比较高。还支持通配符的方法,代码如下:

<!-- 方法拦截器 -->
<interceptor-ref name="mymethod">
    <!-- 定义拦截的方法 -->
    <param name="includeMethods">add*</param>
</interceptor-ref>

表示拦截所有已add开头的方法。