美文网首页
springmvc 14 拦截器

springmvc 14 拦截器

作者: 小小机器人 | 来源:发表于2016-10-25 15:19 被阅读53次
自定义拦截器

1. 自定义的拦截器实现HandlerInterceptor接口

public class FirstInterceptor implements HandlerInterceptor {

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
        System.out.println("firstInterceptor->afterCompletion");
    }
    /* 渲染视图后调用*/

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
        System.out.println("firstInterceptor->postHandle");     
    }
    /* 目标方法执行后调用
     * 但是此时还没有渲染视图*/
    
    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
        System.out.println("firstInterceptor->preHandle");
        return true;
    }
    /* 目标方法执行前调用 :
     * 如果返回false,那么将不再继续*/

}

2. 在springmvc中配置拦截器

<mvc:interceptors>
        <bean class="interceptor.FirstInterceptor"></bean>
        
        <!-- 配置(不)拦截的路径 -->
        <mvc:interceptor>
            <mvc:mapping path="/testInterceptor"/><!-- secondInterceptor拦截的路径 -->
            <mvc:exclude-mapping path="/other"/><!-- secondInterceptor不拦截的路径 -->
            <bean class="interceptor.SecondInterceptor"></bean>
        </mvc:interceptor>
            
    </mvc:interceptors>

3. 拦截器的执行顺序

firstInterceptor->preHandle
secondInterceptor->preHandle
testInterceptor
secondInterceptor->postHandle
firstInterceptor->postHandle
secondInterceptor->afterCompletion
firstInterceptor->afterCompletion
Paste_Image.png

如果某个preHandle方法返回了false,那么其后面的方法都没有机会再执行,除了比该拦截器优先级高的afterCompletion方法除外

Paste_Image.png

相关文章

网友评论

      本文标题:springmvc 14 拦截器

      本文链接:https://www.haomeiwen.com/subject/dtvruttx.html