拦截器和过滤器的区别跨境电商杂货铺

①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

拦截器可以获取ioc中的servicebean实现业务逻辑,拦截器可以获取ioc中的servicebean实现业务逻辑,拦截器可以获取ioc中的servicebean实现业务逻辑,

触发时机

有个专业词语叫触发时机

1.过滤器和拦截器触发时机不一样:

过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。

总结:过滤器包裹住servlet,servlet包裹住拦截器。

如下图所示:

2.过滤器的触发时机是容器后,servlet之前,所以过滤器的doFilter(

10.过滤器

@OverridepublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{System.out.println("before...");chain.doFilter(request,response);System.out.println("after...");}

chain.doFilter(request,response);这个方法的调用作为分水岭。事实上调用Servlet的doService()方法是在chain.doFilter(request,response);这个方法中进行的。

2.拦截器是被包裹在过滤器之中的。

@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{System.out.println("preHandle");returntrue;}@OverridepublicvoidpostHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,ModelAndViewmodelAndView)throwsException{System.out.println("postHandle");}@OverridepublicvoidafterCompletion(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,Exceptionex)throwsException{System.out.println("afterCompletion");}

a.preHandle()这个方法是在过滤器的chain.doFilter(request,response)方法的前一步执行,也就是在[System.out.println("before...")][chain.doFilter(request,response)]之间执行。

b.preHandle()方法之后,在returnModelAndView之前进行,可以操控Controller的ModelAndView内容。

c.afterCompletion()方法是在过滤器返回给前端前一步执行,也就是在[chain.doFilter(request,response)][System.out.println("after...")]之间执行。

3.SpringMVC的机制是由同一个Servlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的。所以过滤器、拦截器、service()方法,dispatc()方法的执行顺序应该是这样的,大致画了个图:其实非常好测试,自己写一个过滤器,一个拦截器,然后在这些方法中都加个断点,一路F8下去就得出了结论。

4.SpringMVC的机制是由同一个Servlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的。

5.,SpringMVC的机制是由同一个Servlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的。

6.SpringMVC的机制是由同一个Servlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的。

7.还有,拦截器是spring容器的,是spring支持的,

总结:拦截器功在对请求权限鉴定方面确实很有用处,在我所参与的这个项目之中,第三方的远程调用每个请求都需要参与鉴定,所以这样做非常方便,而且他是很独立的逻辑,这样做让业务逻辑代码很干净。和框架的其他功能一样,原理很简单,使用起来也很简单,大致看了下SpringMVC这一部分的源码,其实还是比较容易理解的。

我们项目中仅仅用到了preHandle这个方法,而未用其他的,框架提供了一个已经实现了拦截器接口的适配器类HandlerInterceptorAdapter,继承这个类然后重写一下需要用到的方法就行了,可以少几行代码,这种方式Java中很多地方都有体现。

THE END
1.FBS胎牛血清使用方法与常见问题总结小牛血清是Hyclone新西兰的,标签上写已经经过2μm滤膜过滤处理。根据上述培养液的情况,是否说明培养液已被污染?如果是正常的血清是不是在镜下不应该看到杂物,哪怕是极少量的?根据上述血清的描述,是不是说明血清也存在问题,还能用吗?补充:细胞培养以来生长状态就不好。买血清的时候厂家说明不用灭活,所以未灭活。https://www.bio-equip.com/showarticle.asp?ID=453105929&view=1
1.写字楼的分层空气过滤如何提升呼吸质量在选择和安装分层空气过滤系统时,写字楼管理者应充分考虑建筑的布局与使用情况。例如,金地威新闵行科创园在其空气过滤系统的设计中,依据不同区域的人员流动和使用频率,合理布局空气净化设备,确保每个办公区域都能享受到优质的空气供应。这种个性化的设计能够更好地适应不同需求,从而提升整体空气质量。 https://www.jindiweixin.cn/20241116.html
2.准备买个水族箱,麻烦问下除过底滤的,背后过滤和上过滤哪个好?从过滤效果来看,底滤系统表现最佳,其次是顶滤,接着是侧滤,而三合一水泵中的滴流盒效果则稍显逊色。 在噪声控制方面,侧背包、侧溢流和无溢流下水设计在噪音控制上表现相当,且均优于角溢流和三通溢流。 在美观程度上,无溢流下水设计显得最为优雅,其次是侧溢流,角溢流和背包设计在美观上平分秋色,而三重溢流则稍显...https://www.yoojia.com/article/9678508093296415173.html
3.当我们把对象值赋值给另外一个变量时,复制的是对象的指针,指向同...一种引用数据类型:(本质上是由一组无序的键值对组成) 引用数据类型:Object。包含Object、Array、 function、Date、RegExp。 JavaScript不支持创建任何自定义类型的数据,也就是说JavaScript中所有值的类型都是上面8中之一。 null 和 undefined 的区别? 相同: ...https://blog.csdn.net/qq_54753561/article/details/122149197
4.前置过滤器哪个牌子好(前置过滤器厨房前置过滤器哪个牌子好)如果你想要购买一个前置过滤器,那么你应该考虑购买哪个品牌的产品呢?目前市面上有很多不同的品牌,所以你可能会感到有些困惑。不过没关系,小编来帮你介绍一下目前市面上比较受欢迎的几个前置过滤器品牌。 首先是3M,3M是一家在全球都很有名气的公司,他们的产品质量得到了广泛的认可。3M的前置过滤器能够有效地净化水...http://www.baidudw.com/jingyan/1008240
5.还在提信息茧房?来好好了解一下过滤气泡和回声室吧来好好了解一下过滤气泡和回声室吧 来源: 羊村传播 原创 王伟鲜 从尼葛洛庞帝的“我的日报(Daily Me)”,到桑斯坦的“回声室(Echo Chamber)”和“信息茧房(Information Cocoons)”,再到帕里泽的“过滤气泡(Filter Bubble)”... 从上个世纪末到现在,关于个性化定制网络社会的研究从未停下脚步。 在国内...https://xueshu.blogchina.com/561731206.html
6.计算机网络基础知识整理「建议收藏」腾讯云开发者社区采用分组交换技术,在通信之前不需要建立连接,每个节点首先将前一节点送来的分组收下并保存在缓冲区中,然后根据分组头部中的地址信息选择适当的链路将其发送至下一个节点,这样在通信过程中可以根据用户的要求和网络的能力来动态分配带宽。分组交换比电路交换的信道利用率高,但时延较大。分组转发的带来的问题:排队时延...https://cloud.tencent.com/developer/article/2063158
7.十大前置过滤器品牌前置过滤器哪个牌子好2024年前置过滤器十大品牌最新发布,前置过滤器排行榜前十名品牌有霍尼韦尔、汉斯希尔、美的、沁园、海尔、史密斯、3M、安吉尔、倍世、倍世康。前置过滤器10大品牌排行榜由品牌研究部门收集整理大数据分析研究得出,帮助你了解前置过滤器哪个牌子好。https://www.maigoo.com/maigoo/5096qzglq_index.html
8.水垢过滤品牌排行榜十大品牌京东JD.COM为您提供水垢过滤排行榜、水垢过滤哪个牌子好、水垢过滤十大品牌等相关资讯,从水垢过滤价格、评价、图片等多方便比较,为您推荐品牌水垢过滤,网购水垢过滤上京东,放心又轻松!https://m.jd.com/phb/737c77ade1f6b18772f.html
9.看不见的病毒最初是如何被人类发现的?科学家花了整整41年科学湃尚柏朗氏过滤器使用陶瓷做滤芯,即使是非常微小的细菌也无法通过陶瓷滤芯上的滤孔进入滤液。 现在从患有花叶病的烟草叶液中提取的滤液居然有传染性,如何解释? 问题是使用最先进的光学显微镜也无法从滤液中找到致病因子;而且,无论是在有氧的环境下,还是在无氧的环境下,对滤液进行培养后,结果都显示滤液中没有任何细菌...https://www.thepaper.cn/newsDetail_forward_6077196