Spring MVC拦截器和过滤器的区别

简介: 你好看官,里面请!今天笔者讲的是Spring MVC拦截器和过滤器的区别。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。

Spring MVC拦截器和过滤器的区别

如果觉得写的还可以,点个赞支持一下笔者呗!你的点赞和关注会让我更快更新哦。笔者会持续更新关于Java和大数据有关的文章。目前集中精力在更新java框架的内容。


Inteceptor

主要作用:对URL请求进行前置/后置过滤

通过实现Spring的Handlerlnteceptor接口,其中preHandle()方法在调用Handler之前进行拦截,postHandle()方法在视图渲染之前调用,afterCompletion()方法在返回响应之前执行;

image.png

Filter

Filter在请求进入Servlet容器执行service()方法之前就会经过Filter过滤,不像Intreceptor一样依赖于Springm vc框架,只需要依赖于Servlet。Filter启动是随WEB应用的启动而启动,只需要初始化一次,以后都可以进行拦截。

Filter有如下几个种类:

  • 用户授权Filter:检查用户请求,根据请求过滤用户非法请求;
  • 日志Filter:记录某些特殊的用户请求;
  • 解码Filter:对非标准编码的请求解码。

Filter可以拦截多个请求和响应,一个请求和响应也可以被多个Filter拦截。

Filter和Inteceptor的区别

1、Filter接口在javax.Servlet包下面。Inteceptor定义在org.Springframework.web.Servlet中

2、Filter基于Filter接口中的doFilter回调函数,是Servlet容器支持的;而Inteceptor则基于Java本身的反射 机制(AOP思想),是Spring框架支持的

3、Filter是依赖于Servlet容器的,没有Servlet容器就无法回调doFilter方法,而Inteceptor与Servlet无关;

4、Filter的过滤范围比Inteceptor大,Filter除了过滤请求外通过通配符可以保护页面、图片、文件等,而Inteceptor只能过滤请求,只对请求起作用,在请求之前开始,在请求完成后结束(如被拦截,不执行请求)。

5、Filter的过滤一般在加载的时候在init()方法声明,而Inteceptor可以通过在xml声明是guest请求还是user 请求,来辨别是否过滤。

6、Inteceptor可以访问请求上下文、值栈里的对象,而Filter不能。

7、在请求的生命周期中,拦截器可以被多次调用,而过滤器只能在容器初始化时被调用一次。

相关文章
|
2月前
|
存储 前端开发 调度
Flux 与传统的 MVC 架构模式区别
Flux是一种用于构建用户界面的架构模式,与传统的MVC架构不同,它采用单向数据流,通过Dispatcher统一管理数据的分发,Store负责存储数据和业务逻辑,View只负责展示数据,使得应用状态更加可预测和易于维护。
|
26天前
|
JavaScript Java Kotlin
深入 Spring Cloud Gateway 过滤器
Spring Cloud Gateway 是新一代微服务网关框架,支持多种过滤器实现。本文详解了 `GlobalFilter`、`GatewayFilter` 和 `AbstractGatewayFilterFactory` 三种过滤器的实现方式及其应用场景,帮助开发者高效利用这些工具进行网关开发。
153 1
|
30天前
|
Java 关系型数据库 数据库
京东面试:聊聊Spring事务?Spring事务的10种失效场景?加入型传播和嵌套型传播有什么区别?
45岁老架构师尼恩分享了Spring事务的核心知识点,包括事务的两种管理方式(编程式和声明式)、@Transactional注解的五大属性(transactionManager、propagation、isolation、timeout、readOnly、rollbackFor)、事务的七种传播行为、事务隔离级别及其与数据库隔离级别的关系,以及Spring事务的10种失效场景。尼恩还强调了面试中如何给出高质量答案,推荐阅读《尼恩Java面试宝典PDF》以提升面试表现。更多技术资料可在公众号【技术自由圈】获取。
|
2月前
|
监控 Java 数据安全/隐私保护
如何用Spring Boot实现拦截器:从入门到实践
如何用Spring Boot实现拦截器:从入门到实践
52 5
|
3月前
|
前端开发
MVVM是什么?和MVC有何区别呢?
【10月更文挑战第11天】MVVM 和 MVC 都是为了更好地组织和管理软件架构,提高开发效率和代码质量。理解它们的特点和区别,有助于我们在实际开发中做出更合适的选择,并构建出更加优秀的应用程序。
|
3月前
|
监控 Java 应用服务中间件
Spring和Spring Boot的区别
Spring和Spring Boot的主要区别,包括项目配置、开发模式、项目依赖、内嵌服务器和监控管理等方面,强调Spring Boot基于Spring框架,通过约定优于配置、自动配置和快速启动器等特性,简化了Spring应用的开发和部署过程。
78 19
|
3月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
38 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
3月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
42 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
3月前
|
Java 编译器 Spring
Spring AOP 和 AspectJ 的区别
Spring AOP和AspectJ AOP都是面向切面编程(AOP)的实现,但它们在实现方式、灵活性、依赖性、性能和使用场景等方面存在显著区别。‌
113 2
|
3月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
219 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习