全站搜索
首页/天辰娱乐登录/注册平台
首页/天辰娱乐登录/注册平台
  • 天辰娱乐注册
  • 天辰娱乐登录
  • 天辰娱乐招商QQ
  • 一口气说出 过滤器 和 拦截器 6个区别别再傻傻分不清了
    作者:admin 发布于:2024-02-09 07:28 文字:【】【】【

      毕竟这两种工具开发中用到的频率都相当高,应用起来也是比较简单的,可当我准备回复他的时候,竟然不知道从哪说起,支支吾吾了半天,场面炒鸡尴尬有木有,工作这么久一个基础问题答成这样,丢了大人了。平时觉得简单的知识点,但通常都不会太关注细节,一旦被别人问起来,反倒说不出个所以然来。

      归根结底,还是对这些知识了解的不够,一直停留在会用的阶段,以至于现在「一看就会一说就废」!这是典型基础不扎实的表现,哎·~,其实我也就是个虚胖!

      过滤器的配置比较简单,直接实现Filter接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter接口中定义了三个方法。

      init():该方法在容器启动初始化过滤器时被调用,它在Filter的整个生命周期只会被调用一次。「注意」:这个方法必须执行成功,否则过滤器会不起作用。

      doFilter():容器中的每一次请求都会调用该方法,FilterChain用来调用下一个过滤器Filter。

      destroy():当容器销毁 过滤器实例时调用该方法,一般在方法中销毁或关闭资源,在过滤器Filter的整个生命周期也只会被调用一次

      拦截器它是链式调用,一个应用中可以同时存在多个拦截器Interceptor, 一个请求也可以触发多个拦截器 ,而每个拦截器的调用会依据它的声明顺序依次执行。

      首先编写一个简单的拦截器处理类,请求的拦截是通过HandlerInterceptor来实现,看到HandlerInterceptor接口中也定义了三个方法。

      preHandle():这个方法将在请求处理之前进行调用。「注意」:如果该方法的返回值为false,将视为当前请求结束,不仅自身的拦截器会失效,还会导致其他的拦截器也不再执行。

      过滤器 和 拦截器 均体现了AOP的编程思想,都可以实现诸如日志记录、登录鉴权等功能,但二者的不同点也是比较多的,接下来一一说明。

      过滤器和拦截器 底层实现方式大不相同,过滤器是基于函数回调的,拦截器则是基于Java的反射机制(动态代理)实现的。

      在我们自定义的过滤器中都会实现一个doFilter()方法,这个方法有一个FilterChain参数,而实际上它是一个回调接口。ApplicationFilterChain是它的实现类, 这个实现类内部也有一个doFilter()方法就是回调方法。

      我们看到过滤器 实现的是javax.servlet.Filter接口,而这个接口是在Servlet规范中定义的,也就是说过滤器Filter的使用要依赖于Tomcat等容器,导致它只能在web程序中使用。而拦截器(Interceptor) 它是一个Spring组件,并由Spring容器管理,并不依赖Tomcat等容器,是可以单独使用的。不仅能应用在web程序中,也可以用于Application、Swing等程序中。

      过滤器Filter是在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后。

      拦截器Interceptor是在请求进入servlet后,在进入Controller之前进行预处理的,Controller中渲染了对应的视图之后请求结束。

      在上边我们已经同时配置了过滤器和拦截器,再建一个Controller接收请求测试一下。

      项目启动过程中发现,过滤器的init()方法,随着容器的启动进行了初始化。此时浏览器发送请求,F12 看到居然有两个请求,一个是我们自定义的Controller请求,另一个是访问静态图标资源的请求。看到控制台的打印日志如下:

      过滤器Filter执行了两次,拦截器Interceptor只执行了一次。这是因为过滤器几乎可以对所有进入容器的请求起作用,而拦截器只会对Controller中请求或访问static目录下的资源请求起作用。

      在实际的业务场景中,应用到过滤器或拦截器,为处理业务逻辑难免会引入一些service服务。

      过滤器中注入service,发起请求测试一下 ,日志正常打印出“我是方法A”。

      在拦截器中注入service,发起请求测试一下 ,竟然TM的报错了,debug跟一下发现注入的service怎么是Null啊?这是因为加载顺序导致的问题,拦截器加载的时间点在springcontext之前,而Bean又是由spring进行管理。

      拦截器:老子今天要进洞房;Spring:兄弟别闹,你媳妇我还没生出来呢!

      实际开发过程中,会出现多个过滤器或拦截器同时存在的情况,不过,有时我们希望某个过滤器或拦截器能优先执行,就涉及到它们的执行顺序。

      过滤器用@Order注解控制执行顺序,通过@Order控制过滤器的级别,值越小级别越高越先执行。

      拦截器默认的执行顺序,就是它的注册顺序,也可以通过Order手动设置控制,值越小越先执行。

      看到输出结果发现,先声明的拦截器preHandle()方法先执行,而postHandle()方法反而会后执行。

      postHandle()方法被调用的顺序跟preHandle()居然是相反的!如果实际开发中严格要求执行顺序,那就需要特别注意这一点。

      「那为什么会这样呢?」得到答案就只能看源码了,我们要知道controller中所有的请求都要经过核心组件DispatcherServlet路由,都会执行它的doDispatch()方法,而拦截器postHandle()、preHandle()方法便是在其中调用的。

      //注意:执行Handle【包括我们的业务逻辑,当抛出异常时会被Try、catch到】

      发现两个方法中在调用拦截器数组HandlerInterceptor[]时,循环的顺序竟然是相反的。。。,导致postHandle()、preHandle()方法执行的顺序相反。

      我相信大部分人都能熟练使用滤器和拦截器,但两者的差别还是需要多了解下,不然开发中使用不当,时不时就会出现奇奇怪怪的问题,以上内容比较简单,新手学习老鸟复习,有遗漏的地方还望大家积极补充,如有理解错误之处,还望不吝赐教。

      特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

      免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

      上海2022年9月5日 /美通社/ -- 2022年8月,第七届易贸生物产业大会(EBC)盛大落幕。本届大会聚焦分子诊断、抗体药物、细胞与基因治疗、mRNA等热门话题,汇聚了政府、学术、产业、投资等一线领域的科学家、学者...

      上海2022年8月4日 /美通社/ -- 七夕之际,爱意流转,不管是初次相见的倾心,还是兜兜转转的回眸,无论是哪一种形式的情感宣誓,都离不开之后细水长流的相互经营。值此佳节,德国高仪为相爱之人筑建心仪居所,以保持新鲜、默...

      摘要:根据ReactoGardV自动反冲洗过滤器在某石化公司蜡油加氢裂化装置上的应用情况,介绍了反冲洗过滤器系统的工作过程、操作方法以及常见故障的处理方法。实际应用表明,该过滤器自动化程度高,过滤精度高,能有效减少原料油...

      上海2022年5月20日 /美通社/ --爱可以是一餐一饭的简单舒心,也可以是诗歌音乐的精神共鸣。爱本是多元的,以各种各样的形态和方式展现,但终究离不开经营、沉淀和灵魂共振三个主题。在520这个充满爱意的日子...

      上海2022年5月12日 /美通社/ --医疗制药行业与人民的健康生活息息相关。随着我国人均寿命提升以及老龄化加剧,人们对健康检查和治疗的需求将会持续增加。一方面,我国老年人口规模庞大,人口老龄化程度持续加深...

      摘要:为保证空气过滤器罐体在高压工况下工作的可靠性,基于ANSYS workbench有限元分析软件进行单向流固耦合分析,计算出其在峰值压力下的应力与形变量。仿线MPa瞬时工作压力下,罐体入口连接处产生最...

      零损耗能量过滤器使生命科学家能够以前所未有的细节观察蛋白质结构 俄勒冈州希尔斯伯勒2020年8月11日 /美通社/ --

      Snapchat将其大部分应用用户群快速追踪到增强现实制作世界,使其镜头和过滤器工具可供任何使用网络浏览器的人使用。 Snap发布了一款名为Create Your Own的新型网络工具,它允

      据外媒报道,在新冠大流行期间戴口罩和保持社交距离绝对是当务之急,但一种实验性的新型空气过滤器可以帮助限制COVID-19的传播。据称,该装置可以通过加热导致疾病的病毒,将其杀死。该过滤器原型由休斯顿大

      英国谢菲尔德2020年7月16日 /美通社/ -- 最新研究显示,英国公司Xeros Technology Group研发的新型洗衣机过滤技术可帮助解决衣

      巴克莱银行周四发表的一份行业分析报告称,苹果已敲定下一代iPhone射频芯片的供应商,其中一家供应商暗示新款iPhone将使用更加先进的射频过滤器技术。 报告称,美国马萨诸塞州模拟半导体

      合适的过滤系统是液压系统长寿命运行必不可少的条件,但是选择正确的过滤器往往不是轻而易举的事情。 不同的行业,液压系统的不同元件都有自身的要求,并且相互影响,最后涉及到如何选择那看起来简单

      随着云服务市场的升温,所有传统安全产品厂商都在努力打造他们的云战略,而网络安全设备厂商面临着特殊的挑战。 赛门铁克新上任的临时首席执行官Rick Hill在2019财年第四季度财报电话会

      减压阀的安装非常容易,在每一只减压阀的包装盒上或盒内均有减压阀的安装使用说明,按照说明您能很容易地了解减压阀的外形结构和安装方法,确保减压阀的正常使用,使您能够舒适长久地使用减压阀。 减

      减压阀的结构: 减压阀的基本构件:近进气口,排气口,进排气腔连接孔,调节和恢复弹簧,连接调节弹簧膜片和恢复弹簧端活塞的阀芯,膜片和膜片室,调压螺钉。 其结构和工作原理如图所示:

      嵌入式监测器可检测、阻止和记录攻击并防止传播。 英国剑桥和加利福尼亚州圣何塞– 2019年10月8日 - Arm TechCon大会 – 加州San Jose会议中心 Ultra

      气动调节阀就是以压缩气体为动力源,以气缸为执行器,并借助于阀门定位器、转换器、电磁阀、保位阀、储气罐、气体过滤器等附件去驱动阀门,实现开关量或比例式调节,接收工业自动化控制系统的控制信号来完成调

      一、主轴部件故障 由于使用调速电机,数控机床主轴箱结构比较简单,容易出现故障的部位是主轴内部的刀具自动夹紧机构、自动调速装置等。为保证在工作中或停电时刀夹不会自行松脱,刀具自动夹

      变频器凝露的危害 自然条件下的空气,是由少量尘埃、水汽以及绝干空气所组成。空气所能够容纳的水汽与环境温度成正比,即环境温度越高,空气就能够容纳更多数量的水汽。而所谓的露点温度,是

      制冷压缩机安装有哪些要求 制冷压缩机安装的一般要求是什么?小编就给大家介绍一下,希望对大家有所帮助! 1.收齐制冷装置、系统设计的原始资料、技术文件,熟悉全部内容。

    相关推荐
  • 过滤器 和 拦截器 6 个区别别再傻傻分不清了 - 程序员小富的个人空间 - OSCHIN
  • 一口气说出 过滤器 和 拦截器 6个区别别再傻傻分不清了
  • 过滤器与拦截器的具体区别
  • 详解SpringMVC的拦截器与异常处理机制
  • Spring拦截器和过滤器的区别在哪?
  • 怎么用setSendMessageListener方法拦截或监听所有发送消息
  • Google图片搜索新增内容过滤功能
  • 全自动不锈钢高压电动刮刀过滤器多少钱
  • UT Austin余桂华团队东北林大陈文帅团队:用于可持续水净化的生物基纳米纤维水
  • 江北大石坝街道:落实长效机制 助推城市治理见实效
  • 脚注信息
    Copyright © 2026 首页/天辰娱乐登录/注册平台 TXT地图 HTML地图 XML地图