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

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

介绍

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

拦截器-过滤器 执行顺序

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


创建拦截器

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

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

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

@Component //交给IOC容器管理
public class RequestInterceptor  implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//进入controller前执行 true放行 false不放行//拦截到执行的操作//  return HandlerInterceptor.super.preHandle(request, response, handler);return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {//controller运行完成后执行// HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}@Overridepublic 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 {@Autowiredprivate RequestInterceptor interceptor;@Overridepublic 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.lryc.cn/news/294975.html

相关文章:

  • 爬虫工作量由小到大的思维转变---<第四十五章 Scrapyd 关于gerapy遇到问题>
  • 2024.2.4 awd总结
  • 仰暮计划|“用心感悟使我获取了艺术真谛,自律如始让我获得了人生成功,我将继续在艺术道路上走下去”
  • 网络原理——网络层
  • ideaIU-2023.2.1安装教程
  • JAVA面试题之三分布式和微服务的区别是什么?
  • electron实现软件(热)更新(附带示例源码)
  • 飞天使-k8s知识点12-kubernetes散装知识点1-架构有状态资源对象分类
  • mhz_c1f
  • Excel——高级筛选匹配条件提取数据
  • Python初学者学习记录——python基础综合案例:数据可视化——动态柱状图
  • 1.27马尔科夫链,抽样蒙特卡洛模拟(逆转化方法,接受拒绝矩阵),马尔科夫链蒙特卡洛MCMC,隐马尔科夫(HMM(V算法剪枝优化),NLP)
  • MC34063异常发热分析
  • 获取真实 IP 地址(一):判断是否使用 CDN(附链接)
  • 跨越财务困境,聚道云软件连接器如何助力企业轻松实现数字化转型?
  • Python接口自动化测试框架运行原理及流程
  • strtok的使用
  • 0206作业
  • 数据结构-栈
  • CentOS7搭建k8s-v1.28.6集群详情
  • Android实现底部导航栏方法(Navigation篇)
  • python 爬虫篇(1)---->re正则的详细讲解(附带演示代码)
  • (超详细)10-YOLOV5改进-替换CIou为Wise-IoU
  • Java-并发高频面试题-2
  • Windows安装Redis
  • Nicn的刷题日常之 有序序列判断
  • 1、将 ChatGPT 集成到数据科学工作流程中:提示和最佳实践
  • vite+vue3发布自己的npm组件+工具函数
  • 嵌入式软件bug分析基本要求
  • 【C/C++ 17】继承