本文介绍: 拦截器和过滤器的功能都差不多,拦截器是SpringBoot的,而且过滤器是Servlet的SpringBoot过滤器。

介绍

拦截器和过滤器的功能都差不多,拦截器是SpringBoot的,而且过滤器是Servlet的
SpringBoot过滤器

拦截器-过滤器 执行顺序

发起请求-》过滤器-》拦截器-》接口


创建拦截器

实现HandlerInterceptor 的接口,并且实现他都三个方法

  • preHandle: 进入controller前执行 true放行 false不放行
  • postHandle: controller运行完成后执行
  • afterCompletion: 视图渲染完毕后执行 最后执行的方法

三个方法都默认实现,按要求保留即可

@Component //交给IOC容器管理
public class RequestInterceptor  implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //进入controller前执行 true放行 false不放行


		//拦截到执行的操作

          //  return HandlerInterceptor.super.preHandle(request, response, handler);
          return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //controller运行完成后执行
       // HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //视图渲染完毕后执行 最后执行的方法
      //  HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
    
}

注册拦截器(配置类)

配置类继承接口WebMvcConfigurer ,并实现他都addInterceptors方法,

@Configuration //表示该类为配置类
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private RequestInterceptor interceptor;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(interceptor).addPathPatterns("/**");
        //拦截所有的请求


//        registry.addInterceptor(interceptor)
//                .addPathPatterns("/user")//需要拦截的请求
//                .excludePathPatterns("/login");//不需要拦截的请求
       
    }
}

拦截路径的配置

  • /*: 拦截所有一级路径,如:/login 或 /user …
  • /**: 拦截任意路径,如:/login 或 /user/1 或 /deletes/user/1
  • /user/*: 拦截/user的任意一级路径 如:/user/login,不可以拦截二级如:/user/deletes/2
  • /user/**: 拦截/user下的任意路径

原文地址:https://blog.csdn.net/dpc5201314/article/details/136046965

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_66939.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注