什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?

AOP、Interceptor、Filter关于日志记录的联系与区别 摘要: Spring框架中AOP、Filter和Interceptor均可用于日志记录,但适用场景不同。AOP适用于业务层(@Service),记录方法调用、执行时间等核心业务日志,通过切面编程实现环绕增强;Interceptor属于SpringMVC层,适合记录Controller的HTTP请求参数、URL等Web相关日志;Filter作为Servlet容器级拦截,处理原始请求/响应数据(如Body)。三者互补:Filter全局拦截请求,Interceptor处理Web层行为,AOP聚焦业务逻辑。组合使用 阅读详情

这里是修真院后端小课堂,每篇分享文从

八个方面深度解析后端知识/技能,本篇分享的是:

【什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?】

标题:

【修真院java 小课堂】什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?

开场语:

大家好,我是IT修真院郑州分院第12期的学员张泉良,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务二,深度思考中的知识点——什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?

  1. 背景介绍:

Filter是什么

过滤器:依赖于servlet容器。在实现上,基于函数回调,它可以对几乎所有请求进行过滤,

一个过滤器实例只能在容器初始化时调用一次

Interceptor是什么

依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。

在实现上,基于Java的反射机制,属于面向切面编程(AOP)的一种运用,

就是在一个方法前,调用一个方法,或者在方法后,调用一个方法

AOP是什么

AOP(Aspect-Oriented Programming)是一种编程思想,对OOP的补充

常见实现:Filter和拦截器(代理模式)

OOP: 对于所有对象中都存在的一些公共行为,无能为力

为减少重复代码,AOP(面向切面)技术诞生

  1. 知识剖析:

2.1 Filter 的使用:

(1)在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest

(2)根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据

(3)根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据

2.2 创建一个Filter

(1)创建Filter 处理类

init方法、destory方法、doFilter方法

(2)在web.xml 文件中配置Filter

2.3 interceptor 使用

通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter抽象类,

复写preHandle()、postHandle()和afterCompletion()来对用户的请求进行拦截处理

  1. 常见问题:

3.1 Filter与interceptor的区别

(1) 接口定义不同

Filter 接口定义在 javax.servlet 包中,接口 HandlerInterceptor 定义在org.springframework.web.servlet 包中

(2) 规范不同

Filter 是在 Servlet 规范中定义的,是 Servlet 容器支持的;拦截器是在 Spring容器内的,是Spring框架支持的

(3) 使用资源不同

拦截器是一个Spring的组件,归Spring管理,因此能使用Spring里的任何资源、

对象;Filter 不能够使用 Spring 容器资源

(4) 深度不同

Filter在只在 Servlet 前后起作用;拦截器能够深入到方法前后、异常抛出前后等。

(5) 调用者不同

Filter 是被 Server 调用;Interceptor 是被 Spring 调用。

因此 Filter 总是优先于 Interceptor 执行

3.2 多个过滤器执行顺序

(1): 执行 第一个Filter中chain.doFilter()之前的部分

(2): 执行 第二个Filter中chain.doFilter()之前的部分

(3): 业务逻辑

(4): 执行 第二个Filter中chain.doFilter()之后的部分

(5): 执行 第一个Filter中chain.doFilter()之后的部分

3.3 面向切面编程

(1)通知(增强)Advice:你想要的功能

(2)连接点 Join point:spring允许你是通知(Advice)的地方

   spring 方法 ,AspectJ支持构造器或属性注入时

(3)切点 Pointcut:连接点的基础上,来定义切入点

(4)切面 Aspect:通知和切入点的结合

(5)引入 Introduction: 向现有的类添加新方法属性

(6)织入 Weaving : 切面应用到目标对象来创建新的代理对象的过程

  1. 编码实战:

  2. 拓展思考:

5.1 多个过滤器与拦截器的代码执行顺序

过滤器在servlet启动后开始执行,进入页面访问开始执行拦截器

5.2 AOP实现,统一异常

重点在切点的定义,异常可以为预期异常和非预期异常,处理方式不同

5.2 监听器

以监听Web应用的上下文信息、Servlet请求信息和Servlet会话信息,即ServletContext、ServletRequest、HttpSession

执行顺序:监听器>过滤器>拦截器

  1. 参考文献:

Filter及FilterChain的使用:

(1)https://blog.youkuaiyun.com/zhaozheng7758/article/details/6105749

监听器:

(2)https://www.cnblogs.com/dudududu/p/8507735.html

filter、interceptor、aop实现:

(3)https://blog.youkuaiyun.com/FU250/article/details/80292293

  1. 更多讨论:

Q1:Listener的分类有哪些?

A1:按照对象 Servlet的Listener监听器包括三种类型:

  ServletContextListener 监听ServletContext对象

 HttpSessionListener 监听Session对象

 HttpRequestListener 监听Request对象

 按照监听事件类型划分:

 用于监听域对象自身的创建和销毁的事件监听器。

 用于监听域对象的属性的增加和删除的事件监听器。

用于监听绑定到HttpSession域中的某个对象的状态的事件监听器。

Q2:过滤器的执行过程,调用接口的顺序

A2:如果有多个过滤器,那么过滤器的初始化顺序是web.xml中配置由下到上的;

注意:容器启动的时候的初始化顺序是由下到上,但是在用户进行资源的访问的时候;

过滤器复写的public void doFilter方法是由上至下的按照web.xml中配置的顺序由上到下执行。

Q3:监听器其主要作用是什么?

A3:统计在线人数,利用HttpSessionLisener;加载初始化信息:利用ServletContextListener;

  统计网站访问量实现访问监控
  1. 鸣谢:

  2. 结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

Unity Spine动画控制全攻略:播放、回调与停止的实战技巧 本文深入解析Unity中Spine动画的核心控制技巧,涵盖动画播放、轨道分层、事件回调与平滑停止等实战方法。通过封装SpineAnimationController,详细讲解了如何利用动画播放结束回调实现精准的游戏逻辑同步,并提供了避免内存泄漏和动画卡顿的避坑指南,助力开发者打造流畅专业的2D游戏动画系统。 阅读详情

相关推荐

用Bus Hound和MIDIOX抓包分析USB MIDI数据流:从硬件接口到软件解析的完整实战

本文详细介绍了如何使用Bus Hound和MIDIOX工具抓包分析USB MIDI数据流,从硬件接口到软件解析的完整实战过程。通过解析MIDI协议、捕获Note On/Off事件、控制变更消息等实例,帮助开发者深入理解音乐数字接口的底层通信机制,并提供了常见问题的解决方案和调试技巧。

weixin_42692935的博客 404

侧边栏_第四课 侧边栏和过滤器

注意:发送 “lesson4” 可以获取英文版 Email嗨,今天我们介绍的是 sidebar (侧边栏)和 Filter (过滤器)。sidebar 是个独立于主内容区的面板,可单独开启和关闭。侧边栏通过页面右上方的...菜单打开sidebar。它的主要目的是为了方便你在主内容区进行写作时,并排打开其他笔记进行查看或参考。你可以任意在主内容区或侧边栏进行编辑(怎么方便就怎么来)。你甚...

weixin_39838798的博客 547

Cisco思科 电子科技大学计算机网络 SRWE 期末技能考试 (PTSA)

电子科技大学2024春_SRWE_计算机网络系统 SRWE 期末技能考试 (PTSA)

2301_76745065的博客 5093

Flink 多流转换

文章目录1.分流1.1 简单实现2.Union聚合3.Connect 连接4.Join 合流4.1 Window Join 窗口联结4.2 Interval Join 间隔联结4.3 Window CoGroup 窗口同组联结5.总结 1.分流 所谓“分流”,就是将一条数据流拆分成完全独立的两条、甚至多条流。也就是基于一个DataStream,得到完全平等的多个子 DataStream,如图 8-1 所示。一般来说,我们会定义一些筛选条件,将符合条件的数据拣选出来放到对应的流里。 1.1 简单实现 其实根

959 1463

【物联网毕设】多模态智能门禁系统设计(STM32+人脸识别+蓝牙联动)

本文详细介绍了基于STM32的多模态智能门禁系统设计,整合了人脸识别、蓝牙联动、RFID和密码等多种开锁方式。文章从硬件选型、电路设计、嵌入式软件编程到手机APP开发,提供了完整的毕设实现方案与调试指南,帮助物联网与嵌入式方向的学生构建一个功能全面、可扩展的智能门禁系统。

rain6的博客 246

自动驾驶IDM与MOBIL模型

IDM模型,自动驾驶

不想学好数学的汽车工程师不是一个好的程序员 1万+

Spring:过滤器filter、拦截器interceptor、和AOP的区别与联系

Filter过滤器 过滤器拦截web访问url地址。 严格意义上讲,filter只是适用于web中,依赖于Servlet容器,利用Java的回调机制进行实现。 Filter过滤器:和框架无关,可以控制最初的http请求,但是更细一点的类和方法控制不了。 过滤器可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response),并对...

琦彦 2万+

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

过滤器(Filter)、拦截器(Interceptor)和AOP(面向切面编程)之间的差异

主要用于Servlet规范中,对请求和响应进行预处理和后处理。主要用于Spring框架中,对Controller处理过程进行增强。是一种编程范式,通过切面将横切关注点模块化,可以用于处理事务、日志等横切关注点。在实际应用中,过滤器、拦截器和AOP可以协同使用,根据需求选择合适的方式来增强应用的功能。过滤器范围最大,拦截器次之,aop最小aop操作最细致,拦截器次之,过滤器最小。

m0_70577179的博客 835

【ChangeCLIP】Remote sensing change detection with multimodal vision-language representation learning

ChangeCLIP论文及代码使用详解。持续更新变化检测最新论文,欢迎订阅本专栏。

向上生长的程序媛的博客 1333

【一看就会】autoware universe项目结构解析——从一层一层直到control源码

下载安装autoware universe花了一天。下载好之后,按照网上说的跑了一下仿真是能跑的,证明下的代码没问题。然后就得看一下各模块实现的源码了。但是当我打开这些文件的时候。我勒个豆。这么多是个玩意儿。我连该启动哪个launch文件,哪个文件夹是干啥的都不知道。在我慢慢弄懂之后,我也记录这个庞大的项目的各个文件夹和里面的文件以及项目,以及自己使用时应该启动哪些launch文件。这篇文章目的就是通过找到control部分的源码,来帮助我们梳理这个庞大项目的各个文件的功能。

weixin_48386130的博客 2037

过滤器、拦截器和AOP的分析与对比

文章目录一、过滤器(Filter)1.1 简介1.2 应用场景1.3 源码分析二、拦截器(Interceptor)2.1 简介2.2 应用场景2.2 源码分析三、面向切面编程(AOP)3.1 简介3.2 应用场景3.3 AOP术语四、三者对比五、参考文献 一、过滤器(Filter) 1.1 简介 过滤器拦截的是URL Java的过滤器能够为我们提供系统级别的过滤,也就是说,能过滤所有的web请求,...

我在这里分享我的学习笔记,欢迎交流~ 3000

解决群晖NAS无法拉取docker镜像问题

在2024-06-01日以前,使用SSH登录后是可以直接拉取docker镜像的;但是之后当我们使用SSH登录上群晖NAS,使用【sudo -i】切换到超管拉取镜像会提示报错【error pulling image configuration: Get "https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/cf/cff6b68a194a672fd337d8728bfb252071012cce6

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2万+

浅谈:Filter(过滤器)与Interceptor(拦截器)和Spring AOP的区别?

Filter过滤器:拦截web访问url地址。 Interceptor拦截器:拦截以 .action结尾的url,拦截Action的访问。 Spring AOP拦截器:只能拦截Spring管理Bean的访问(业务层Service)

u013456370的专栏 9800

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

基于AOP设计思想的拦截器(Interceptor)与传统拦截器(Filter)的区别

转载地址: http://newleague.iteye.com/blog/1121524 现在AOP的设计开发理念在软件开发中用的越来越广泛,在我们开发的软件中也广泛进行了使用。而最常用的就是filter和interceptor。 Filter 该过滤器的方法是创建一个类XXXFilter实现此接口,并在该类中的doFilter方法中声明过滤规则,然后在配置文件web.

xiaoshang的专栏 1182

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

AOP--Filter使用,过滤器和拦截器的区别

AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想,并不是一种具体的实现,谈到实现一般有Filter和代理模式两种常见的使用方式,spring中的AOP也是封装代理模式完成的,可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP利用封装、继承和多态把一切事物打造成对象结构,但是对于所有对象中都存在的一

常耀光的博客 6617

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

filter、interceptor、aop实现与区别

前言项目中我们经常需要对RESTful api进行拦截,主流实现方法有filter、interceptor、aop,先说一下他们各自的实现。FilterAnimalFilter实现javax.servlet.Filter,项目启动时已初始化完成,可在控制台看到打印的初始化日志。@Component public class AnimalFilter implements Filter { ...

_再见阿郎_的专栏 2万+

Filter、Interceptor、Spring Aop 区别分析

Filter、Interceptor、Spring Aop 区别

笔记 1076

过滤器(Filter)与拦截器(Interceptor)区别

过滤器(Filter)与拦截器(Interceptor)区别

吴名氏的博客 13万+

过滤器filter、拦截器interceptor、和AOP的区别与联系

Filter过滤器 过滤器拦截web访问url地址。 严格意义上讲,filter只是适用于web中,依赖于Servlet容器,利用Java的回调机制进行实现。 Filter过滤器:和框架无关,可以控制最初的http请求,但是更细一点的类和方法控制不了。 过滤器可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response),并对请求响应做出像响应的过滤操作, 比如设置字符编码,鉴权操作等 Interceptor拦截器 拦截器拦截

lishuan182的博客 2326

SpringBoot 三种拦截http请求方式Filter,interceptor和aop

SpringBoot 三种拦截http请求方式Filter,interceptor和aop。 这三种拦截方式的拦截顺序是:filter—>Interceptor-->ControllerAdvice-->@Aspect -->Controller; 这三种方式的区别:1.过滤器 过滤器拦截web访问url地址。 严格意义上讲,filter只是适用于web中,依赖于Servlet容器,利用Java的回调机制进行实现。 Filter过滤器:和框架无关,可以控制最初的http请求,

u014496893的博客 2万+

spring boot实现AOP,Filter,Interceptor以及3个之间的区别和使用场景

零、测试的项目项目:demo    输入:http://127.0.0.1:8080/demo/hello/springboot进行测试/** * 测试用的 */ @RestController public class Hellotroller { @GetMapping("/hello/{name}") public String hello(@PathVariable ...

3年零6个月 4660

过滤器(Filter)和拦截器(Interceptor)的区别

Filter介绍 Filter可以认为是Servlet的一种“加强版”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。Filter也可以对用户请求生成响应,这一点与Servlet相同,但实际上很少会使用Filter向用户请求生成响应。使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servle...

weixin_30664615的博客 6369

Spring MVC filter、interceptor、AOP区别

Spring MVC filter、interceptor、AOP区别 Filter过滤器 过滤器拦截web访问url地址。 严格意义上讲,filter只是适用于web中,依赖于Servlet容器,利用Java的回调机制进行实现。 Interceptor拦截器 拦截器拦截以 .action结尾的url,拦截Action的访问。 Interfactor是基于Java的反射机制(APO思想)...

Jaylon Wang的专栏 651
上一篇: 密 为什么DB的设计中要使用Long来替换掉Date类型?
下一篇: 生成json的几种方式
learning__java
博客等级 码龄8年 87粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值