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

SpringBoot 过滤器Filter 拦截请求 生命周期

介绍

当用户请求接口时,请求会先到过滤器,在到处理逻辑的接口,在过滤器中可以可以判断用户权限,如:是否登录,或请求前的一些操作,完成一下比较通用的操作,如:前端的AXIOS 的请求拦截器响应拦截器。

过滤器拦截器优先级

浏览器-》过滤器-》-》拦截器-》接口

过滤器优先级比较高

添加组件支持

启动类上添加@ServletComponentScan //开启组件支持
@ServletComponentScan

在这里插入图片描述

拦截路径

@WebFilter(urlPatterns =“”)加上该注解 表示该类为过滤器 ,urlPatterns 为拦截路径

  • @WebFilter(urlPatterns = “/login”) //只拦截/login
  • @WebFilter(urlPatterns = “/*”) //拦截所有
  • @WebFilter(urlPatterns = “/login/*”) //拦截login下的所有接口

创建过滤器

继承于Filter 接口,并且实现他都三个方法

过滤器分为3个函数,也叫可以叫生命周期

doFilter:每次请求时执行的方法 每次请求都执行 必须重写

init: 服务器启动时执行的方法 一般用于加载资源或初始化 只执行一次 可以不重写

destroy: 服务器关闭时执行 (销毁) 只执行一次 可以不重写

@WebFilter “urlPatterns”参数:拦截哪类的请求

@WebFilter(urlPatterns="/*")//加上该注解 表示该类为过滤器
public class RequestFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//每次请求时执行的方法}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {//服务器启动时执行的方法 一般用于加载资源或初始化 只执行一次Filter.super.init(filterConfig);}@Overridepublic void destroy() { //服务器关闭时执行 (销毁) 只执行一次Filter.super.destroy();}
}

请求拦截

创建完成后,请求拦截主要在这个方法里,会传递3个对象参数进来
ServletRequest servletRequest, //请求
ServletResponse servletResponse,//响应
FilterChain filterChain// 放行

    @Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//每次请求时执行的方法//....放行前执行的逻辑.....filterChain.doFilter(servletRequest,servletResponse);//放行该请求//....放行后执行的逻辑.....}

相关文章:

  • Scala 和 Java在继承机制方面的区别
  • 【Java万花筒】数据的安全钥匙:Java的加密与保护方法
  • 幻方(Magic Square)
  • 神经网络基本原理
  • 2024年Java架构篇之设计模式
  • Java实现婚恋交友网站 JAVA+Vue+SpringBoot+MySQL
  • BlueLotus 下载安装使用
  • docker部署docker运维工具
  • SpringBoot 事务管理Transactional 数据回滚 数据一致性
  • 已经设置密码的情况下连接不上linux下redis服务的,解决办法
  • 高速接口PCB布局指南(五)高速差分信号布线(三)
  • Oracle 面试题 | 18.精选Oracle高频面试题
  • python实现中国剩余定理
  • 计算机网络原理基础
  • 专栏《数据结构与算法:初学者入门指南》序言
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • docker容器内的网络抓包
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Javascript编码规范
  • js 实现textarea输入字数提示
  • Meteor的表单提交:Form
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • oschina
  • React-flux杂记
  • text-decoration与color属性
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue-loader 源码解析系列之 selector
  • 诡异!React stopPropagation失灵
  • 深入浏览器事件循环的本质
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 微信小程序--------语音识别(前端自己也能玩)
  • 小程序测试方案初探
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • kubernetes资源对象--ingress
  • Semaphore
  • 大数据全解:定义、价值及挑战
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #HarmonyOS:Web组件的使用
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • ( 10 )MySQL中的外键
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .Net 4.0并行库实用性演练
  • .NET 5种线程安全集合
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost