美文网首页
拦截器interceptor

拦截器interceptor

作者: 星汉西流_夜未央 | 来源:发表于2024-06-30 20:46 被阅读0次

概述

  • 概念: 是一种动态拦截方法调用的机制,类似于过滤器。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环境中的资源

相关文章

网友评论

      本文标题:拦截器interceptor

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