面试篇-Spring 拦截器和过滤器的区别?
1、实现原理不同
- 过滤器和拦截器 底层实现方式大不相同,过滤器 是基于函数回调的,拦截器 则是基于Java的反射机制(动态代理)实现的。
2、使用范围不同
- 我们看到过滤器 实现的是 javax.servlet.Filter 接口,而这个接口是在Servlet规范中定义的,也就是说过滤器Filter 的使用要依赖于Tomcat等容器,导致它只能在web程序中使用。
- 拦截器(Interceptor) 它是一个Spring组件,并由Spring容器管理,并不依赖Tomcat等容器,是可以单独使用的。不仅能应用在web程序中,也可以用于Application、Swing等程序中。
3、触发时机不同
- 过滤器Filter是在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后。
- 拦截器 Interceptor 是在请求进入servlet后,在进入Controller之前进行预处理的,Controller 中渲染了对应的视图之后请求结束。
4、拦截的请求范围不同
Filter 处理中
Interceptor 前置
Interceptor 处理中
Interceptor 后置
Filter 处理中
- 过滤器Filter执行了两次,拦截器Interceptor只执行了一次。
- 这是因为过滤器几乎可以对所有进入容器的请求起作用,
- 而拦截器只会对Controller中请求或访问static目录下的资源请求起作用。
5. 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
面试篇-Spring 拦截器和过滤器的区别?相关推荐
- 详解拦截器和过滤器的区别
拦截器和过滤器的区别 过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对acti ...
- java 拦截器和过滤器的区别
介绍 在 Java Web 应用程序中,拦截器和过滤器是两种不同的机制,用于在请求/响应处理过程中进行拦截和过滤.两者都可以用来在请求到达目标资源之前对其进行预处理.修改或拦截. 但是,拦截器和过滤器 ...
- 拦截器和过滤器的区别 -- 简单分析篇
过滤器,是在Java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...
- springboot拦截器和过滤器的区别与使用
拦截器与过滤器的区别 spring的拦截器与servlet的filter有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查.日志记录等,不同的是: 适用范围不同:filter是servle ...
- 大剑无锋之拦截器和过滤器的区别【面试推荐】
①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求 ...
- Spring 拦截器和过滤器中自动注入为 null 的原因及解决方案
起因 开发过程中在过滤器(filter)中注入Bean出现空指针异常,通过查找资料了解空指针的原因,特此记录. 问题分析 由于其他bean在service,controller层注入一点问题也没有,开 ...
- Spring—拦截器和过滤器介绍
文章目录 介绍 过滤器(Filter) 拦截器(Interceptor) 包含关系 比较 关注微信公众号:CodingTechWork,一起学习进步. 介绍 过滤器(Filter) 过滤器是Java ...
- 区分Java拦截器和过滤器
今天带大家分析java拦截器和过滤器的区别,文中有非常详细的解释说明,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下 一.过滤器(filter) 过滤器处于客户端与Web资源(Serv ...
- 关于SSM框架设置拦截器和过滤器
我们知道拦截器和过滤器都是在项目中起到拦截过滤请求的功能,所以可能在设置的时候会傻傻分不清.这里我们先来比较它们的区别. 过滤器Filter是JavaEE标准,在Servlet的规范中定义的,是Ser ...
- struts2中拦截器和过滤器的比较
拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而 ...
最新文章
- ViewPager的使用小技巧
- C#窗体控件更新(五)
- 分享一个超棒的在线jQuery mobile原型设计开发工具 - codiqa
- django常用的模型字段类型和常用的查询
- 一款可视化的在线制作H5
- mysql面试题2020_2020年MySQL数据库面试题
- 解决WordPress无法上传媒体文件以及无法下载和安装主题与插件的问题
- Django REST框架--认证和权限
- python: web api、json 与 gzip、zlib库比较
- vue element插件this.$confirm用法(取消也可以发请求)
- flask中的jinjia2模板引擎详解1
- 10015---MySQL--innodb_flush_log_at_trx_commit参数
- 微信企业付款转账到微信
- win10无线显示未连接到服务器,win10突然无法连接到无线显示器
- 关于定义二维数组时为什么可以省略行,而不可以省略列
- 警告!来历不明的疫情邮件或许是黑客陷阱
- python文件相对路径是什么意思_python相对路径表示_什么是绝对路径和相对路径,举例说明...
- 微信小程序解决跳转时携带参数乱码的问题 ?
- 中国能不能写出操作系统?
- Aspects源码解析