Springboot过滤器和拦截器的区别

article/2025/10/7 17:03:01

上两篇文章我们介绍了过滤器Filter和拦截器Intercepter,其功能都是对请求进行拦截并对请求过滤,本篇文章就介绍一下两者的区别

1. 过滤器和拦截器的区别

  1. 过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。
  2. 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需依赖servlet
    api ,不需要依赖spring。
  3. 过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射
  4. Filter是依赖于Servlet容器,属于Servlet规范的一部分,而拦截器则是独立存在的,可以在任何情况下使用。
  5. Filter的执行由Servlet容器回调完成,而拦截器通常通过动态代理(反射)的方式来执行。
  6. Filter的生命周期由Servlet容器管理,而拦截器则可以通过IoC容器来管理,因此可以通过注入等方式来获取其他Bean的实例,因此使用会更方便。

过滤器和拦截器非常相似,但是它们有很大的区别,最简单明了的区别就是过滤器可以修改request,而拦截器不能过滤器需要在servlet容器中实现,拦截器可以适用于javaEE,javaSE等各种环境拦截器可以调用IOC容器中的各种依赖,而过滤器不能过滤器只能在请求的前后使用,而拦截器可以详细到每个方法

总的来说
过滤器就是筛选出你要的东西,比如requeset中你要的那部分拦截器在做安全方面用的比较多,比如终止一些流程
网上有一张图片很不错,这里拷过来给大家看一下
在这里插入图片描述

  • 过滤器(Filter) :可以拿到原始的http请求,但是拿不到你请求的控制器和请求控制器中的方法的信息。
  • 拦截器(Interceptor):可以拿到你请求的控制器和方法,却拿不到请求方法的参数。
  • 切片(Aspect): 可以拿到方法的参数,但是却拿不到http请求和响应的对象

在这里插入图片描述

2. 应用场景

拦截器是在DispatcherServlet这个servlet中执行的,因此所有的请求最先进入Filter,最后离开Filter。其顺序如下:
Filter -> Interceptor.preHandle -> Handler -> Interceptor.postHandle
-> Interceptor.afterCompletion -> Filter


2.1 拦截器应用场景

拦截器本质上是面向切面编程(AOP),符合横切关注点的功能都可以放在拦截器中来实现,主要的应用场景包括:

  • 登录验证,判断用户是否登录。
  • 权限验证,判断用户是否有权限访问资源,如校验token
  • 日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。
  • 处理cookie、本地化、国际化、主题等。性能监控,监控请求处理时长等。
  • 通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取
    Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现)

2.2 过滤器应用场景

  • 过滤敏感词汇(防止sql注入)
  • 设置字符编码
  • URL级别的权限访问控制
  • 压缩响应信息

在这里插入图片描述


http://chatgpt.dhexx.cn/article/WClStPhf.shtml

相关文章

关于拦截器与过滤器使用场景、拦截器与过滤器的区别整理

拦截器与过滤器的区别总结&#xff1a; 过滤器在web.xml中配置&#xff1a; &#xff08;1&#xff09;因为一开始在过滤器中映射的url-pattern填写路径是*.action。所有的action要经过它的过滤。<url-pattern>*.action</url-pattern> &#xff08;2&#xff09;…

彻底搞清拦截器和过滤器的区别

一、引言 本来想记录一下关于用户登陆和登陆之后的权限管理、菜单管理的问题&#xff0c;想到解决这个问题用到Interceptor&#xff0c;但想到了Interceptor&#xff0c;就想到了Filter&#xff0c;于是就想说一下它们的执行顺序和区别。关于Interceptor解决权限和菜单管理的问…

Spring拦截器和过滤器的区别及详解

拦截器和filter的功能都是拦截&#xff0c;filter是在servlet前执行的&#xff0c;拦截器拦截的是Spring MVC定义的概念。过滤器中包含拦截器&#xff0c;发送一个请求&#xff0c;先进行过滤器处理&#xff0c;看程序是否受理该请求。过滤器放过后&#xff0c;程序中的拦截器再…

拦截器与过滤器的区别

文章目录 一、二者理解过滤器&#xff08;Filter&#xff09;拦截器&#xff08;Interceptor&#xff09; 二、拦截器与过滤器的区别区别&#xff1a; 三、拦截器与过滤器的触发时机拦截器与过滤器触发时机不一样 四、使用场景五、图解 一、二者理解 过滤器&#xff08;Filter…

拦截器和过滤器的区别

1、实现原理不同 过滤器和拦截器底层实现方式大不相同&#xff0c;过滤器 是基于函数回调的&#xff0c;拦截器 则是基于Java的反射机制&#xff08;动态代理&#xff09;实现的。 2、使用范围不同 我们看到过滤器 实现的是 javax.servlet.Filter 接口&#xff0c;而这个接口是…

过滤器 和 拦截器的 6个区别,别再傻傻分不清了

周末有个小伙伴加我微信&#xff0c;向我请教了一个问题&#xff1a;老哥&#xff0c;过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊&#xff1f; 听到题目我的第一感觉就是&#xff1a;简单&#xff01; 毕竟这两种工具开发中用到的频率都相当高&#xff0c;应用起来也…

过滤器和拦截器的区别

文章目录 一、拦截器和过滤器的区别1、过滤器1、实现方式2、应用场景 2、拦截器1、实现方式2、应用场景 总结 一、拦截器和过滤器的区别 1、过滤器和拦截器触发时机不一样&#xff0c;过滤器是在请求进入容器后&#xff0c;但请求进入servlet之前进行预处理的。请求结束返回也…

过滤器和拦截器有什么区别?

过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;都是基于 AOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;思想实现的&#xff0c;用来解决项目中某一类问题的两种“工具”&#xff0c;但二者有着明显的差…

面试篇-Spring 拦截器和过滤器的区别?

1、实现原理不同 过滤器和拦截器 底层实现方式大不相同&#xff0c;过滤器 是基于函数回调的&#xff0c;拦截器 则是基于Java的反射机制&#xff08;动态代理&#xff09;实现的。 2、使用范围不同 我们看到过滤器 实现的是 javax.servlet.Filter 接口&#xff0c;而这个接…

Nessus在线更新教程

前言&#xff1a;在线更新Nessus需要科学上网&#xff0c;没有工具无法更新。 1. 设置更新策略 这里选&#xff1a;更新所有的组件、频率选&#xff1a;每天&#xff0c;就可以 2. 检查是否有更新 3. 打开梯子&#xff0c;将梯子设置为全局模式 4. cmd命令行&#xff0c;进…

弱点扫描工具NESSUS详细教程

NESSUS • 家庭版 • 免费 • 专业版 • 收费、无限的并发连接 • 下载 • http://www.tenable.com/products/nessus/select-your-operating-system • 安装 • dpkg -i • 安装路径:/opt/nessus • 启动服务 • systemctl start nessusd.service • 管理地址 • https://12…

NESSUS使用笔记

Nessus 使用记录 启动nessus服务Nessus更新插件教程win10升级&#xff08;破解&#xff09;方法kali 进行升级(初始化完成后之后发现还是无法破解成功&#xff0c;看来kali系统无法使用这种方式进行破解了) 启动nessus服务 进入kali系统&#xff0c;终端输入如下命令&#xff…

Nessus学习

攻击主机&#xff1a; Kali 192.168.11.106 靶机&#xff1a;windows server 2008 r2 192.168.11.134 x64 32位 nessus 实验原理&#xff1a; 利用漏洞扫描器能够自动应用漏洞扫描原理&#xff0c;对目标主机安全漏洞进行检测&#xff0c;附带识别主机漏洞的特征库的功能&…

Nessus安全测试工具使用教程

Nessus安全测试工具使用教程 1.创建 New Scan扫描按钮 2.选择扫描策略 3.创建扫描成功 4.扫描结果

Nessus部署及简单使用

01 Nessus 简介 Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用 Nessus 作为扫描该机构电脑系统的软件。Nessus号称是世界上最流行的漏洞扫描程序,通常包括成千上万的最新的漏洞&#xff0c;各种各样的扫描选项&#xff0c;及易于使用的…

Nessus 使用学习

在看招聘软件的时候注意到有的招聘要求里写着会用 Nessus 这个软件&#xff0c;于是我好奇就下了这个软件。 在使用的过程中发现这也是个非常强大的渗透软件。&#xff08;总感觉自己有好多东西没学&#xff09; 1. 安装 在这里我使用的是 Windows 版本。安装可以说是非常简…

Windows版Nessus漏洞扫描器安装与使用

一、介绍、下载 适用版本&#xff1a;Windows 10 64位 Nessus版本&#xff1a;8.13.1 插件&#xff1a;all_2.0_20220618.tar 即2022年6月更新。 资源下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Q_ywVkNqcu9WH_OJH03-iw 提取码&#xff1a;qsbo 二…

1 | Nessus使用

目录 1 安装1.1 下载地址1.2 点击【Connent via SSL】1.3 选择【Nessus Essentials】1.4 填写注册信息1.5 下载所需要的组件1.6 nessus登陆页面 2 Nessus模块2.1 Host Discovery2.2 Basic Network Scan2.3 Advanced Scan2.4 Advanced Dynamic Scan2.5 Malware Scan2.6 Web Appl…

windows10安装nessus

01 安装nessus 01 安装nessus 02 获取验证码 02 离线安装拓展包 01 找到nessus的快捷方式 02 找到nessus 程序安装目录 03 复制拓展包 04 cmd更新插件 05 刷新nessus 06 登录成功

渗透测试技术_Nessus工具(二) _漏洞扫描工具 Nessus的使用教程

漏洞扫描工具 Nessus的使用教程 1、Nessus使用教程 1.1、Nessus登录 在浏览器中访问&#xff1a;https://{服务器IP}:8834 例如访问&#xff1a;https://10.1.1.191:8834/ 输入你注册的账号密码进行登录&#xff0c;例如&#xff1a;nessus_casb/liaxx&#xff0c;进入主页…