写在前面
今天我们来说一个比较基础的问题,那就是过滤器Filter和拦截器Interceptors有什么区别?这个虽然很少被人提起,偶然还是被面试官提到,所以下面就来看一下吧。
过滤器Filter和拦截器Interceptors有什么区别?
在聊这两者有什么区别之前,我们先来看一下这两者到底是个什么?
过滤器Filter:通过函数的回调,可以针对请求进行过滤,但是每个过滤器针对单个请求只能过滤筛选一次。
通常我们会在使用Filter过滤器时,解决加密解密,参数筛选等等的需求情况。
拦截器Interceptors:拦截器通过AOP原理,进行面向切面的操作,一般都是在执行某个方法时进行拦截,比如指定注入一些特定参数等等的情况。
两者的区别?
- 其实刚才在特征的时候就说到了,Filter过滤器是基于函数的回调机制,Interceptors拦截器是基于Java的反射机制,通过AOP原理进行方法拦截。
- Filter过滤器本质上是要有Servlet才行,比如有tomcat相关包才可以,而拦截器不需要如此。
- Filter过滤器是针对访问请求的过滤,可以做到每个请求只有一次的过滤要求;拦截器因为本身是Java的概念,所以他只能拦截一些接口方法,做一些参数填充等等的工作。
- 还有一个很重要,也很明显的点,就是过滤器只能被请求调用一次,拦截器不一样,同一个请求可以通过方法进入拦截器多次,次数不做限制。
总结一下
今天我们学习了过滤器Filter和拦截器Interceptors的区别,面对金三银四的好时候,也到了该背面试题的时候了,所以就开始吧。