栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMvc拦截器和过滤器的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMvc拦截器和过滤器的区别

SspringMvc(或Springboot)中的过滤器是基于web开发JavaEE标准,先于所有servlet执行的一种起过滤作用的技术;拦截器是基于Spring容器的,不仅适用于web开发,也可用于application、swing程序的一种拦截技术。

它们之间至少有以下区别:

1.拦截器基于Java反射机制,过滤器基于函数回调;

2.拦截器在每一次请求可以多次调用,过滤器伴随web容器的创建和销毁分别进行一次init和destroy,在每一次请求仅进行一次调用;

对于1,反射机制这里不做探究,而函数回调我是这样理解的:

 对于2,这里多次调用和一次调用指的是方法调用:

对于每次请求,过滤器只执行dofilter():

拦截器针对不同时机——  进入handler之前执行preHandle() , 在handler内部但还未返回ModelAndView执行postHandle() , 返回了ModelAndView但还未回调到filter执行afterCompletion() ,这里以登录成功举例说明:

补充:另外,我看到很多文章说拦截器拦截不到静态资源请求,而过滤器可以。但经测试,两者都可以拦截,不管是否静态资源。能不能拦截只取决于你的配置:

这里的拦截器可以拦截除css,js,img文件夹外的所有:

这里的过滤器可以拦截所有:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302031.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号