[总结]过滤器(Filter)和拦截器(Interceptor)的区别
拦截器 |
过滤器 |
|
实现 |
java反射 |
函数回调 |
规范 |
spring框架 |
servlet规范 |
依赖 |
不依赖servlet容器 ,依赖于web框架(比如springMVC) |
依赖servlet容器 |
作用范围 |
action请求,spring中是contgroller |
几乎所有请求起作用(除了web程序,也可以用于Application,Swing) |
使用spring资源(访问上下文,值栈里的对象,获取IOC容器中的各个bean) |
可以 |
不可以 |
在action的生命周期中,调用次数 |
可以多次 |
只能在容器初始化时调用一次(注意:有时候我们的项目看起来可能调用一次请求,但实际过滤多次,是因为非动、静态资源分离的项目,请求又附带的静态资源,导致过滤器触发多次) |
触发时机 |
请求进入servlet后,但请求进入controller之前。 请求结束返回,是在controller处理完后,返回给servlet之前。 |
请求进入容器后,但请求进入servlet之前。 请求结束返回,是在servlet处理完后,返回给前端之前。 |
传参 |
HttpServletRequest/Response |
ServletRequest/Response |
参考文章:
拦截器和过滤器的区别 - THISISPAN - 博客园 https://www.cnblogs.com/panxuejun/p/7715917.html