Spring Boot 使用过滤器filter

embedded/2025/3/5 0:08:31/

执行流程

在Spring Boot项目中,过滤器(Filter)的执行流程遵循Servlet规范。具体来说,过滤器是在请求到达目标资源之前和响应返回给客户端之前执行的一系列操作。下面是详细的过滤器执行流程:

  1. 初始化阶段:

    • 当Web应用启动时,容器会读取配置文件中的过滤器信息。
    • 容器会实例化每个过滤器,并调用其init(FilterConfig filterConfig)方法进行初始化。
  2. 请求处理阶段:

    • 当一个请求到达服务器时,容器会检查是否有任何过滤器与该请求匹配。
    • 如果有多个过滤器匹配,则按照它们在配置文件中声明的顺序依次执行。
    • 每个过滤器的doFilter(ServletRequest request, ServletResponse response, FilterChain chain)方法会被调用。
      • doFilter方法中,你可以在请求到达目标资源之前执行一些操作。
      • 调用chain.doFilter(request, response)将请求传递给下一个过滤器或目标资源。
      • 请求经过所有过滤器后,最终到达目标资源(如Controller)进行处理。
  3. 响应处理阶段:

    • 目标资源处理完请求后,生成响应。
    • 响应会沿着过滤器链逆序返回,即最后一个过滤器先处理响应,然后是倒数第二个过滤器,依此类推。
    • 在每个过滤器的doFilter方法中,你可以在响应返回给客户端之前执行一些操作。
  4. 销毁阶段:

    • 当Web应用停止时,容器会调用每个过滤器的destroy()方法进行清理工作。

 具体使用

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter(urlPatterns = "/*")
public class MyGlobalFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化操作System.out.println("MyGlobalFilter initialized");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 在请求到达控制器之前执行的操作System.out.println("Before processing the request");// 继续处理请求chain.doFilter(request, response);// 在响应返回给客户端之前执行的操作System.out.println("After processing the request");}@Overridepublic void destroy() {// 销毁操作System.out.println("MyGlobalFilter destroyed");}
}


http://www.ppmy.cn/embedded/169697.html

相关文章

前端面试题最新版

一、Vue 相关 1. 基础题 Vue 2 和 Vue 3 的主要区别是什么? 答案: 响应式系统:Vue 2 使用 Object.defineProperty,Vue 3 使用 Proxy。Composition API:Vue 3 引入了 Composition API,提供了更好的逻辑复用…

CSS隐藏元素的方式

方式一: visibility 属性 visibility 属性默认值是 show ,如果设置为 hidden ,元素会隐藏。 元素看不见了,还占有原来的位置(元素的大小依然保持)。 方式二: display 属性 设置 dis…

C语言实现单链表

单链表是数据结构中最基础的链式结构,它不按照线性的顺序存储数据,而是由若干个同一结构类型的“节点”依次串联而成的,即每一个节点里保存着下一个节点的地址(指针)。 上图中,一个表头变量head是用来存储链表首节点的地址,链表中每个节点有data(数据)部分和n…

序列化是什么?常见的序列化方式有哪些?什么时候我们会用到序列化?

序列化(Serialization)是指将对象的状态信息转换为可以存储或传输的形式(如字节序列、XML 文档、JSON 字符串等)的过程。反序列化则是序列化的逆过程,它将存储或接收到的字节序列、XML 文档、JSON 字符串等转换回对象的…

GPT-4.5来了

https://chat.xutongbao.top/

[数据结构]树的概念及结构

一、树的概念 树是一种 非线性 的数据结构,它是由 n ( n>0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 。 *有一个 特殊的结点,…

【Springboot知识】Logback从1.2.x升级到1.3.x需要注意哪些点?

文章目录 **1. 确认依赖版本**示例依赖配置(Maven): **2. 处理 StaticLoggerBinder 的移除**解决方案: **3. 修改日志配置文件**示例 logback.xml 配置: **4. 检查兼容性问题**Spring Boot 2.x 的兼容性解决方案&#…

删除hive用户后该用户创建的表权限问题及修复

问题 当hive集群开启多用户的模式下,假设用户组A的用户hive_test创建了一个表, 此时另一个用户也是可以访问这个表的,但是因为一些原因,目前需要删除用户组A和用户hive_test, 在这个情况下,该用户创建的表&#xff0c…