filter过滤器_web容器的过滤器Filter和拦截器Inteceptor的区别
1 过滤器介绍
过滤器是JavaEE标准,采用函数回调的方式进行。是在请求进入容器之后,还未进入Servlet之前进行预处理,并且在请求结束返回给前端这之间进行后期处理。
chain.doFilter(request, response);这个方法的调用作为分水岭。事实上调用Servlet的doService()方法是在chain.doFilter(request, response);这个方法中进行的。
|
2 拦截器介绍
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆;
|
a.preHandle()这个方法是在过滤器的chain.doFilter(request, response)方法的前一步执行,也就是在 [System.out.println("before...")][chain.doFilter(request, response)]之间执行。
b.preHandle()方法之后,在return ModelAndView之前进行,可以操控Controller的ModelAndView内容。
c.afterCompletion()方法是在过滤器返回给前端前一步执行,也就是在[chain.doFilter(request, response)][System.out.println("after...")]之间执行。
SpringMVC的机制是由同一个Servlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的
3 过滤器和拦截器区别
过滤器包裹住servlet,servlet包裹住拦截器:
过滤器和拦截器的区别:
①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
⑦拦截器是spring容器的,是spring支持的。
触发时机
过滤器和拦截器触发时机不一样:
过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。
过滤器的触发时机是容器后,servlet之前,所以过滤器的doFilter(
ServletRequest request, ServletResponse response, FilterChain chain
)的入参是ServletRequest ,而不是httpservletrequest。因为过滤器是在httpservlet之前。
过滤器和拦截器流程
最后来看看书本定义:
filter过滤器_web容器的过滤器Filter和拦截器Inteceptor的区别相关推荐
- Filter(过滤器) 和 interceptor(拦截器)的区别
Filter(过滤器) 和 interceptor(拦截器)的区别 1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容 ...
- 过滤器(Filter)和拦截器(Interceptor)的区别
来自:http://www.cnblogs.com/luoyun/archive/2013/01/04/2844274.html 过滤器(Filter)和拦截器(Interceptor)的区别 Fil ...
- 过滤器(Filter)与拦截器(Interceptor )区别(转)
原文地址:https://www.cnblogs.com/junzi2099/p/8022058.html#_labelTop 原文地址:https://www.cnblogs.com/junzi20 ...
- 一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了
周末有个小伙伴加我微信,向我请教了一个问题:老哥,「过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊?」 听到题目我的第一感觉就是:「简单」! 毕竟这两种工具开发中用到的频 ...
- tomcat 拦截指定url_一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了
点击" 程序员内点事 "关注,选择" 设置星标 " 坚持学习,好文每日送达! 周末有个小伙伴加我微信,向我请教了一个问题:老哥,「过滤器 (Filter) 和 ...
- 过滤器 和 拦截器 6个区别,别再傻傻分不清了
周末有个小伙伴加我微信,向我请教了一个问题:老哥,过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊? 听到题目我的第一感觉就是:简单! 毕竟这两种工具开发中用到的频率都相当 ...
- 拦截器和过滤器区别_新手能看懂的(Interceptor)和(Filter)区别与使用!
一.拦截器与过滤器 我们先了解一下过滤器和拦截器.这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的.在分析两者的区别之前,我们先理解一下AOP的概念,AOP不是一种具体的技术,而是一种 ...
- Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系
在我们日常的开发中,我们经常会用到Filter和Interceptor.有时同一个功能.Filter可以做,Interceptor也可以做.有时就需要考虑使用哪一个比较好.这篇文章主要介绍一下,二者的 ...
- 拦截器(Inteceptor),过滤器(Filter),切面(Aspect)处理HttpServiceReqeust请求
1.拦截器 java里的拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可 ...
最新文章
- 微生物组助手——最易学的扩增子、宏基因组分析流程
- 虚拟服务器nodejs项目部署打包,nodejs+express搭建服务器及vue项目部署打包
- MySQL通过两表避免回表_mysql利用覆盖索引避免回表优化查询
- docker -v 覆盖了容器中的文件_springboot配合maven打成可执行jar,构建镜像部署到docker容器中...
- 我们并没有觉得MapReduce速度慢,直到Spark出现
- dlut-KFQ概率上机2
- 一个好的销售团队需具备的4个特点
- 微软公布Netgear 固件严重漏洞详情,可盗取用户身份并攻陷系统
- Bailian2884 Problem III【入门】
- 83)PHP,配置文件功能
- centos7恢复mysql数据库_centos7 mysql数据库的安装与使用
- sudo rpm安装时$USER是root
- Ubuntu上安装ns2-2.34
- 移动硬盘上安装Windows 10系统
- 记录自己在厦门两年来的面试经历--完结篇
- matlab 方位角 经纬度,经纬度转方位角matlab程序
- 华为云×奇点云 | 828 B2B企业节,一起成就好生意
- 委托代理问题------The principal-agent problem
- 怎么看自己的操作系统?
- 保险业的5项CX预测