Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【拦截器和过滤器的区别】

【拦截器和过滤器的区别】

作者头像
用户5640963
发布于 2019-07-25 06:47:38
发布于 2019-07-25 06:47:38
6490
举报
文章被收录于专栏:卯金刀GG卯金刀GG

引言:

定义:

过滤器:

依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等;

拦截器:

依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理

过滤器和拦截器的区别:

①拦截器是基于java的反射机制的,而过滤器是基于函数回调。   ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。   ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。   ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。   ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。   ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。 拦截器可以获取ioc中的service bean实现业务逻辑

过滤器和拦截器触发时间和地点不一样:

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

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

图片:

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

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

最后附一个图片:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
保卫你的应用:探索过滤器和拦截器的奥秘
在现代Web开发中,安全性和性能是至关重要的因素。过滤器和拦截器是Web应用中的两个关键概念,它们可以帮助你保护你的应用免受恶意攻击,同时还可以实现各种功能,从日志记录到性能优化。这两个概念可能听起来有些抽象,但实际上它们就像是你应用的护卫者,站在前线,确保一切都在掌握之中。在本文中,我们将深入探讨过滤器和拦截器的作用、差异以及如何在你的项目中充分利用它们。
一只牛博
2025/05/30
350
保卫你的应用:探索过滤器和拦截器的奥秘
过滤器 Filter 和拦截器 Interceptor 的区别
它依赖于servlet容器。它可以对几乎所有请求进行过滤。使用过滤器的目的,是用来做一些过滤操作,获取我们想要获取的数据,比如:在Javaweb中,对传入的request、response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者Controller进行业务逻辑操作。
BUG弄潮儿
2022/12/05
4360
过滤器 Filter 和拦截器 Interceptor 的区别
Servlet过滤器与拦截器区别
①拦截器是基于动态代理的,而过滤器是基于函数回调。   ②拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器。   ③拦截器可以在方法前后,异常前后等调用,而过滤器只能在请求前和请求后各调用一次。   ④拦截器可以利用依赖注入,因此在Spring框架程序中,优先拦截器。
用户7705674
2021/10/07
9060
过滤器、拦截器的区别
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!
收心
2022/06/19
2840
面试官:谈谈过滤器和拦截器的区别?
而过滤器(Filter)则可以对几乎所有的请求都能起作用 包括css js等资源文件
路人甲Java
2023/08/29
4840
面试官:谈谈过滤器和拦截器的区别?
SpringMVC过滤器、拦截器与监听器的区别
1、过滤器: 依赖于servlet容器; 在实现上基于函数回调,可以对几乎所有请求进行过滤; 缺点是一个过滤器实例只能在容器初始化时调用一次; 使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。 2、拦截器: 依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架; 在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用; 缺点是只能对con
飞狗
2018/12/13
1.3K0
谈谈拦截器和过滤器的区别
  在平常开发或者面试中,经常听到拦截器和过滤器的词语,因为两者有许多地方有相似之处,很容易给大家造成误解下面,下面就来谈谈两者具体是什么吧。
IT学习日记
2022/09/13
5610
谈谈拦截器和过滤器的区别
面试又问:拦截器和过滤器的区别!
大家好,我是田哥,上周有个朋友在面试中被问题倒拦截器和过滤器,第一印象可能会感觉到这两个玩意不就是都可以做日志打印、权限功能...
田维常
2023/08/31
3360
面试又问:拦截器和过滤器的区别!
Java过滤器与SpringMVC拦截器之间的关系与区别[通俗易懂]
今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深夜,时间原因,我就把一些网友的观点重点摘录下来,大家仔细看后也一定会有一个比较新的认识(在此非常感谢那些大牛们的无私奉献,分享他们的经验与心得,才能让像我这样的小白有机会站一下你们这些巨人的肩膀,才能少走些弯路)。
全栈程序员站长
2022/07/28
3020
Java过滤器与SpringMVC拦截器之间的关系与区别[通俗易懂]
拦截器与过滤器的区别
过滤器,是在java web中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。
全栈程序员站长
2022/09/09
5.8K1
【Spring Boot实战与进阶】过滤器和拦截器的使用及其区别
  过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。
程序员云帆哥
2022/05/12
3290
【Spring Boot实战与进阶】过滤器和拦截器的使用及其区别
Spring Aop、拦截器、过滤器的区别[通俗易懂]
Filter过滤器:拦截web访问url地址。 Interceptor拦截器:拦截以 .action结尾的url,拦截Action的访问。 Spring AOP拦截器:只能拦截Spring管理Bean的访问(业务层Service) 执行顺序:过滤前-拦截前-Action处理-拦截后-过滤后。
全栈程序员站长
2022/08/04
2.1K0
Spring Aop、拦截器、过滤器的区别[通俗易懂]
杨老师带你分析 过滤器、监听器和拦截器的区别
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/89177877
杨校
2019/04/18
1.2K0
一文读懂拦截器与过滤器
过滤器,顾名思义就是起到过滤筛选作用的一种事物,只不过相较于现实生活中的过滤器,这里的过滤器过滤的对象是客户端访问的web资源,也可以理解为一种预处理手段,对资源进行拦截后,将其中我们认为的杂质(用户自己定义的)过滤,符合条件的放行,不符合的则拦截下来。
用户7353950
2022/06/23
8870
一文读懂拦截器与过滤器
拦截器和过滤器的区别
执行顺序 :过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。个人认为过滤是一个横向的过
名字是乱打的
2022/05/13
3760
拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别
本来想记录一下关于用户登陆和登陆之后的权限管理、菜单管理的问题,想到解决这个问题用到Interceptor,但想到了Interceptor,就想到了Filter,于是就想说一下它们的执行顺序和区别。关于Interceptor解决权限和菜单管理的问题,在放在下一篇写吧,就酱紫。
好好学java
2019/05/06
4.8K0
拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别
Spring 中拦截器(Interceptor)与过滤器(Filter)的区别
拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
全栈程序员站长
2022/08/09
4180
Java(Spring拦截器、过滤器、AOP)
过滤器是servlet提供的API,需要实现javax.servlet.Filter接口。过滤器可以拦截到方法的请求和响应(ServletRequest request, SetvletResponse response),并对请求响应做出的过滤操作,比如设置字符编码、鉴权操作。
鱼找水需要时间
2023/02/16
5750
Java(Spring拦截器、过滤器、AOP)
java中什么是过滤器_JAVAweb过滤器
①:拦截器是基于java的反射机制,而过滤器基于函数回调。 ②:过滤器依赖于servlet容器,拦截器不依赖于servlet容器。 ③:拦截器只能对action请求起作用,而过滤器几乎对所有的请求都起作用。 ④:拦截器可以访问action上下文,值栈里的对象,而过滤器不能。 ⑤:在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 ⑥:拦截器可以获取IOC容器中的各个bean,而过滤器就不行,(在拦截器里注入一个service,可以调用业务逻辑)。 ⑦:过滤器是在请求进入容器后,但进入servlert前进行预处理的。响应请求也是,在servlet处理结束后,返回给客户端前触发。而拦截器提供了三个方法支持(1)preHandle:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Controller实现); 返回值:true表示继续流程(如调用下一个拦截器或处理器);false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应;postHandle:后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null。 afterCompletion:整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中preHandle返回true的拦截器的afterCompletion。
全栈程序员站长
2022/09/23
1K0
java中什么是过滤器_JAVAweb过滤器
spring boot拦截器和过滤器_过滤器的实现
1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。
全栈程序员站长
2022/09/23
1.9K0
spring boot拦截器和过滤器_过滤器的实现
相关推荐
保卫你的应用:探索过滤器和拦截器的奥秘
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档