上两篇文章我们介绍了过滤器Filter和拦截器Intercepter,其功能都是对请求进行拦截并对请求过滤,本篇文章就介绍一下两者的区别

1. 过滤器和拦截器的区别

  1. 过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。
  2. 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需依赖servlet
    api ,不需要依赖spring。
  3. 过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射
  4. Filter是依赖于Servlet容器,属于Servlet规范的一部分,而拦截器则是独立存在的,可以在任何情况下使用。
  5. Filter的执行由Servlet容器回调完成,而拦截器通常通过动态代理(反射)的方式来执行。
  6. Filter的生命周期由Servlet容器管理,而拦截器则可以通过IoC容器来管理,因此可以通过注入等方式来获取其他Bean的实例,因此使用会更方便。

过滤器和拦截器非常相似,但是它们有很大的区别,最简单明了的区别就是过滤器可以修改request,而拦截器不能过滤器需要在servlet容器中实现,拦截器可以适用于javaEE,javaSE等各种环境拦截器可以调用IOC容器中的各种依赖,而过滤器不能过滤器只能在请求的前后使用,而拦截器可以详细到每个方法

总的来说
过滤器就是筛选出你要的东西,比如requeset中你要的那部分拦截器在做安全方面用的比较多,比如终止一些流程
网上有一张图片很不错,这里拷过来给大家看一下

  • 过滤器(Filter) :可以拿到原始的http请求,但是拿不到你请求的控制器和请求控制器中的方法的信息。
  • 拦截器(Interceptor):可以拿到你请求的控制器和方法,却拿不到请求方法的参数。
  • 切片(Aspect): 可以拿到方法的参数,但是却拿不到http请求和响应的对象

2. 应用场景

拦截器是在DispatcherServlet这个servlet中执行的,因此所有的请求最先进入Filter,最后离开Filter。其顺序如下:
Filter -> Interceptor.preHandle -> Handler -> Interceptor.postHandle
-> Interceptor.afterCompletion -> Filter

2.1 拦截器应用场景

拦截器本质上是面向切面编程(AOP),符合横切关注点的功能都可以放在拦截器中来实现,主要的应用场景包括:

  • 登录验证,判断用户是否登录。
  • 权限验证,判断用户是否有权限访问资源,如校验token
  • 日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。
  • 处理cookie、本地化、国际化、主题等。性能监控,监控请求处理时长等。
  • 通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取
    Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现)

2.2 过滤器应用场景

  • 过滤敏感词汇(防止sql注入)
  • 设置字符编码
  • URL级别的权限访问控制
  • 压缩响应信息

Springboot过滤器和拦截器的区别相关推荐

  1. JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别

    JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别 如果从整个项目中看,一个servlet请求的执行过程就变成了这样context-param–>lis ...

  2. struts2 过滤器和拦截器的区别和使用

    struts2 过滤器和拦截器的区别和使用 java web 过滤器和拦截器的区别和使用  1.1 什么是拦截器:      拦截器,在AOP(Aspect-Oriented Programming) ...

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

    AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想,并不是一种具体的实现,谈到实现一般有Filter和代理模式两种常见的使用方式,Spring中的AOP也是封 ...

  4. springboot过滤器和拦截器

    一.过滤器和拦截器的区别 1.过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的.请求结束返回也是,是在servlet处理完后,返回给前端之前. 2.拦截 ...

  5. Springboot过滤器和拦截器详解及使用场景

    一.过滤器和拦截器的区别 1.过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的.请求结束返回也是,是在servlet处理完后,返回给前端之前. 2.拦截 ...

  6. Spring过滤器和拦截器的区别

    Spring过滤器和拦截器的区别 两者的作用 过滤器: 是在javaweb中,你传入的request.response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts ...

  7. Java 过滤器与拦截器的区别

    什么是过滤器(Filter) 过滤器,是在java web中将你传入的request.response提前过滤掉一些信息,或者提前设置一些参数.然后再传入Servlet或Struts2的 action ...

  8. SpringMVC中过滤器和拦截器的区别

    文章目录 1.引言 2.共同点 3.区别 3.1.拦截器 3.2.过滤器 4.具体实现 4.1.拦截器 4.1.1.拦截实现方式 4.1.2.拦截实现 4.2.过滤器 4.2.1.过滤器实现方式 4. ...

  9. 过滤器跟拦截器的区别

    一.拦截器与过滤器的区别总结 1. 原理不同:拦截器是基于java的反射机制的,而过滤器是基于函数回调. 2. 依赖容器:拦截器不依赖与servlet容器,过滤器依赖与servlet容器. 3. 作用 ...

最新文章

  1. 有助于改善性能的技巧(1)
  2. java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)
  3. centos7搭建SVN+Apache+IF.svnadmin支持https实现web管理SVN
  4. Java与ElasticSerach的整合
  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
  6. 高并发异步uwsgi+web.py+gevent
  7. paip.语义分析--单字动词表.txt
  8. 计算机模拟在材料加工研究中的应用,计算机在材料科学中的应用
  9. 薄膜单点压力传感器的制作
  10. php盘古分词,百度分词技术_百度输入法分词怎么关_百度分词原理
  11. python做地图导航_【Python】利用高德地图做你想做之事
  12. 关于SDRAM存储器
  13. RAM、ROM、emmc、iNand、SD卡、mmc 与 Nandflash 的区别
  14. 【Proteus仿真】ATMEGA16 ADC转化数码管显示
  15. MKVToolNix 修改电影默认音轨
  16. 思科计算机网络设计局域网,CISCO局域网设计(毕业设计)_图文.doc
  17. 最高月薪20K?平均薪资近万...在华为子公司工作是什么体验?
  18. IPTV界面产品设计的几点思考
  19. BUUCTF msic 专题(59)[SWPU2019]伟大的侦探
  20. 除了阿里AI设计师“鲁班”,设计师还能用AI做什么?

热门文章

  1. 【性能优化】网络编程 - PHP - 使用TCP长连接的一种优化思路 - 学习/实践
  2. Spring-Boot-全栈开发:漂亮的邮件注册
  3. 命令方块召唤别墅指令_郴州别墅加电梯什么价品质更好_湖南梯井电梯
  4. 计算100以内的质数和
  5. 以太坊应用开发JSON-PRC接口
  6. 这是你想要的工作吗?灵隐寺招聘:没有KPI,佛系上班……
  7. 青龙面板修改默认端口5700为其他
  8. 《软件方法》强化自测题-分析(1)
  9. Python超声波测距仪制作教程
  10. 【思维导图】蒋勋《孤独六讲》内容提炼