java中拦截器和过滤器的区别

37 阅读1分钟

1、使用范围不同

过滤器(Filter): 实现的是 javax.servlet.Filter 接口,而这个接口是在 Servlet 规范中定义的,也就是说过滤器 Filter 的使用要依赖于 Tomcat 等外部容器,Filter 只能在 web 程序中使用

拦截器(Interceptor): 它是一个 Spring 组件,并由 Spring 容器管理,并不依赖 Tomcat 等容器,是可以单独使用的。不仅能应用在 web 程序中,也可以用于 Application 等程序中

2、过滤器 和 拦截器的触发时机也不同,看下边这张图

image.png

1) 过滤器Filter,是在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后

2) 拦截器Interceptor,是在请求进入servlet后,在进入Controller之前进行预处理的,Controller中渲染了对应的视图之后请求结束

3、说明: 过滤器不会处理请求转发, 拦截器会处理请求转发