ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/8/8 16:24:23 拓冰建站 浏览量
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);//放行该请求//....放行后执行的逻辑.....}