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

相关文章
|
16天前
|
存储 前端开发 调度
Flux 与传统的 MVC 架构模式区别
Flux是一种用于构建用户界面的架构模式,与传统的MVC架构不同,它采用单向数据流,通过Dispatcher统一管理数据的分发,Store负责存储数据和业务逻辑,View只负责展示数据,使得应用状态更加可预测和易于维护。
|
25天前
|
前端开发
MVVM是什么?和MVC有何区别呢?
【10月更文挑战第11天】MVVM 和 MVC 都是为了更好地组织和管理软件架构,提高开发效率和代码质量。理解它们的特点和区别,有助于我们在实际开发中做出更合适的选择,并构建出更加优秀的应用程序。
|
1月前
|
监控 Java 应用服务中间件
Spring和Spring Boot的区别
Spring和Spring Boot的主要区别,包括项目配置、开发模式、项目依赖、内嵌服务器和监控管理等方面,强调Spring Boot基于Spring框架,通过约定优于配置、自动配置和快速启动器等特性,简化了Spring应用的开发和部署过程。
52 19
|
1月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
1月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
26 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
1月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
24 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
1月前
|
Java 编译器 Spring
Spring AOP 和 AspectJ 的区别
Spring AOP和AspectJ AOP都是面向切面编程(AOP)的实现,但它们在实现方式、灵活性、依赖性、性能和使用场景等方面存在显著区别。‌
73 2
|
1月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
56 2
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
117 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习