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

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 {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   //每次请求时执行的方法



    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
      //服务器启动时执行的方法 一般用于加载资源或初始化 只执行一次



        Filter.super.init(filterConfig);
    }

    @Override
    public void destroy() { 
    //服务器关闭时执行 (销毁) 只执行一次


        Filter.super.destroy();
    }
}

请求拦截

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

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   //每次请求时执行的方法

		//....放行前执行的逻辑.....

        filterChain.doFilter(servletRequest,servletResponse);
        //放行该请求
        

		//....放行后执行的逻辑.....

    }

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

相关文章:

  • c++学习第十四天
  • three.js+WebGL踩坑经验合集(5.2):THREE.Mesh和THREE.Line2在镜像处理上的区别
  • 梯度下降优化算法-Adam
  • 【Redis】常见面试题
  • AIP-132 标准方法:List
  • 国内不支持个人App开发者的应用商店/平台—耻辱柱
  • CSDN文章导出工具
  • python实现音频转文本
  • flinksqlbug : AggregateFunction udf Could not extract a data type from
  • 一文学会Axios的使用
  • SplashScreen使用
  • 状态压缩 笔记
  • 深拷贝的几种方法
  • 计算机设计大赛 深度学习 植物识别算法系统
  • Unity类银河恶魔城学习记录1-13PlayerAttack-Improve P40
  • canvas图片上设置镂空文字效果
  • Docker进阶篇-Docker网络
  • LabVIEW核能设施监测
  • 信创ARM架构QT应用开发环境搭建
  • jmeter设置关联
  • 前端面试拼图-数据结构与算法
  • 掌握数据预测的艺术:线性回归模型详解
  • 机器学习 - 梯度下降
  • 虚拟机扩容后黑屏卡死解决方法
  • Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.8.1
  • Java 中 ExceptionInInitializer 错误