Spring MVC 拦截器(Interceptor)与过滤器(Filter)的区别?

devtools/2025/2/13 19:38:38/

1、两者概述

  • 拦截器(Interceptor): 只会拦截那些被 @Controller 或 @RestController 标注的类中的方法处理的请求,也就是那些由 Spring MVC 调度的请求。
  • 过滤器(Filter): 会拦截所有类型的 HTTP 请求,包括静态资源和后台 API。

2、什么是 Controller 处理的请求?

  • Controller 是 Spring MVC 的核心组件之一,用于处理用户的 HTTP 请求,并返回响应。
  • 请求会根据 URL 路径、请求方法(GET/POST) 等信息,映射到 Controller 的某个方法上来处理。

3、两者区别

示例图
在这里插入图片描述

4、两者示例

  1. 拦截器(Interceptor)
java">@Component
public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {System.out.println("请求前拦截");return true; // 返回 false 则拦截请求}
}
  1. 过滤器(Filter)
java">@WebFilter("/*")
public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("请求进入过滤器");chain.doFilter(request, response);}
}

5、两者应用场景

拦截器与过滤器的应用场景

  1. 拦截器(Interceptor):
    主要用于 Spring MVC 层,用于处理和控制 Controller 层的请求。
    适用于权限验证、日志记录、统一返回格式、性能监控等需要操作 Controller 层请求的场景。

  2. 过滤器(Filter):
    主要用于 Servlet 层,在请求到达 DispatcherServlet 之前或响应返回之前进行处理。
    适用于跨域处理、安全防护、日志记录、字符编码、性能优化等更底层的操作。


http://www.ppmy.cn/devtools/158570.html

相关文章

redis复制

文章目录 复制功能的实现 部分冲同步实现复制偏移量复制积压缓冲区复制积压缓冲区的大小能否调整??? 服务器运行ID PSYNC命令的实现复制的实现心跳检测检测主从服务器的网络连接状态辅助实现!min-slaves配置选项检测命令去失 总结…

AF3 superimpose函数解读

AlphaFold3 superimpose函数通过使用SVD最小化RMSD,将坐标叠加到参考上,在蛋白质结构预测中用于比较预测结构与真实结构的相似性。 源代码: from src.utils.geometry.alignment import weighted_rigid_align from src.utils.geometry.vect…

React 第二十五节 <Fragment></Fragment> 的用途以及使用注意事项详解

文章如果错误偏差&#xff0c;烦请及时批评指正 一、为什么要使用 <Fragment>&#xff1f; 因为在 React 中&#xff0c;组件必须返回单个根元素。当我们尝试直接返回相邻的 JSX 元素时&#xff1a; function BrokenComponent() {return (<h1>标题</h1><…

在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.20.2

文章目录 1. 安装 nvm&#xff08;如果还没有安装的话&#xff09;2. 加载 nvm 配置3. 列出特定系列的 Node.js 版本&#xff08;远程&#xff09;&#xff1a;4. 安装 Node.js 16.20.25. 使用指定版本的 Node.js6. 验证安装 在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.…

anolis os 8.9-jenkins2.492.1-role-base

一、插件安装 二、新建用户 三、manage roles 3.1 manage role 配置 3.2 Assign Roles

以什么方式维护html网页的多语言版本比较好

维护 HTML 网页的多语言版本有几种常见且有效的方式&#xff0c;主要取决于你的需求和项目规模。以下是几种常用的方式&#xff1a; 不同的 HTML 文件&#xff08;按语言分文件&#xff09;&#xff1a; 优点&#xff1a;每种语言都有一个独立的 HTML 文件&#xff0c;容易管理…

先进制造aps专题二十九 基于ai智能体的生产排程和工厂生产仿真引擎的设计

上文中&#xff0c;我们说&#xff0c;通常的做法是&#xff0c;可以先通过排产仿真引擎产生生产计划&#xff0c;再在工厂仿真引擎里仿真执行&#xff0c;这样可以预先分析计划和执行的差异情况并进行调整优化 这里的产生生产计划&#xff0c;仿真生产执行和数据分析都是人工…

Ubuntu禁止内核自动更新

在Ubuntu中&#xff0c;内核的自动更新有时会导致系统不稳定&#xff0c;特别是在运行关键任务的服务器上。因此&#xff0c;禁用内核的自动更新是一个重要的操作。下面是详细的步骤&#xff0c;帮助您在Ubuntu系统中禁用内核自动更新。 一、锁定内核版本 通过锁定内核版本&a…