当前位置: 首页 > article >正文

SpringBoot 拦截器Intercepto的创建与基本使用

介绍

拦截器和过滤器的功能都差不多,拦截器是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下的任意路径

http://www.kler.cn/a/229411.html

相关文章:

  • 【机器学习:十四、TensorFlow与PyTorch的对比分析】
  • QT在 MacOS X上,如何检测点击程序坞中的Dock图标
  • 最左前缀匹配原则
  • ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义
  • Anaconda安装(2024最新版)
  • 【Linux 之一 】Linux常用命令汇总
  • 【C语言不能不会的操作】调试-万字详解【windows操作系统下】(会写bug还会调试解决bug的程序员简直帅呆了,赶紧点赞收藏)
  • 【ESP32+Python】WIFI连接包括固定账号密码+选择WIFI在输入密码
  • 开源机器人ros 基本概念详细介绍
  • C++之程序内存分配方式
  • springboot(ssm考试信息报名系统 在线考试报名系统Java系统
  • 如何从dockerhub 中运行一个简单项目
  • 二分查找------蓝桥杯
  • 配置Jenkins自动构建打包项目
  • Fink CDC数据同步(六)数据入湖Hudi
  • 新零售的升维体验,摸索华为云GaussDB如何实现数据赋能
  • 使用zip4j解压zip时文件名乱码解决最好的方案
  • c语言实现greedy snake(贪吃蛇)
  • 搭建游戏应该选择什么样的服务器?
  • JavaScript运行机制
  • 普通人应该如何使用GPT
  • 有趣的CSS - 输入框选中交互动效
  • word调整论文格式的记录
  • 第2节、让电机转起来【51单片机+L298N步进电机系列教程】
  • [C++] opencv + qt 创建带滚动条的图像显示窗口代替imshow
  • 亚马逊运营新手指南:10个基础概念解析