拦截器interceptor

概述

  • 概念: 是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。
  • 作用: 拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。

interceptor快速入门

  1. 先创建一个类, 定义拦截器, 实现Handlerlnterceptor接口,并重写其所有方法。


    定义拦截器
@Component
public class LoginCheckInterceptor implements HandlerInterceptor {
    @Override   //目标资源方法执行前执行, 返回true放行, false不放行
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle...");
        return true;
    }

    @Override   //目标资源方法执行后执行
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle...");
    }

    @Override   //视图渲染完毕后执行, 最后执行
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion...");
    }
}
  1. 注册拦截器
  • 再要定义一个类, 称为配置类, 实现WebMvcConfigurer接口, 并在该类上加注解@Configuration, 表明该类是Spring当中的一个配置类, 再重写接口中的方法addInterceptors, 注册拦截器并指定拦截路径


    注册拦截器
@Configuration //配置类
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private LoginCheckInterceptor loginCheckInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**");
    }
}

拦截器--拦截路径

  • 拦截器可以根据需求, 配置不同的拦截路径


  • 常见拦截路径:


    常见拦截路径

拦截器--执行流程

执行流程

过滤器和拦截器的区别

  • 接口规范不同: 过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口
  • 拦截范围不同: 过滤器Filter会拦截所有的资源, 而Interceptor只会拦截Spring环境中的资源
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容