SpringMVC拦截器

SpringMVC拦截器

拦截器的定义

自定义的拦截器需要实现一个接口HandlerInterceptor,并实现接口的三个方法:

public class UserHandlerInterceptor implements HandlerInterceptor {
    /**
    * 该方法在目标方法之前被调用
    * 若返回值为true,则继续调用后续的拦截器和目标方法
    * 若返回值为false,则不会再调用后续的拦截器和目标方法
    * 可以考虑做权限、日志、事务等
    */
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        return false;
    }
    
    /**
    * 该方法在目标方法调用之后、在视图被渲染之前执行
    * 可以对请求域中的属性或者视图做出修改
    */
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }
    
    /**
    * 该方法在渲染视图之后调用
    * 可以释放资源
    */
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
}

拦截器的配置

<mvc:interceptors>
    <mvc:interceptor>
        <!--可以配置拦截器作用路径-->
        <mvc:mapping path="/login"/>
        <!--可以配置拦截器不作用路径-->
        <mvc:exclude-mapping path="/register"/>
        <bean class="com.controller.Interceptor.UserHandlerInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>

多个拦截器的执行顺序

假设有两个拦截器
1.第一个拦截器的preHandle()方法
2.第二个拦截器的preHandle()方法(如果返回false,直接到第一个拦截器的afterCompletion()方法)
3.HandlerAdapter#handle
4.第二个拦截器的postHandle()方法
5.第一个拦截器的postHandle()方法
6.DispatcherServlet
7.第二个拦截器的afterCompletion()方法
8.第一个拦截器的afterCompletion()方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过Handler...
    bboymonk阅读 386评论 0 0
  • 一.拦截器 定义拦截器,实现HandlerInterceptor接口 可以从名称和参数看出各个接口的顺序和作用: ...
    Mr_欢先生阅读 1,454评论 0 13
  • SpringMVC中使用Interceptor拦截器 有两种常用的方法实现SpringMVC拦截器: 1.一种是实...
    ll0292阅读 1,022评论 0 4
  • 各位小伙伴 咱们继续学习新知识 今天要分享的就是 拦截器 不知道小伙伴们平时上网的时候有没有注意到,尤其是上网购物...
    Java联盟阅读 1,739评论 0 1
  • Interceptor拦截器是Spring MVC中重要的功能,它的主要作用是拦截用户的请求 并进行相应的处理。比...
    养码哥阅读 540评论 0 1