- 拦截器是基于java的反射机制,过滤器是基于函数回调。
- 拦截器不依赖于servlet,过滤器依赖于servlet
- 拦截器只能对action请求起作用,过滤器几乎可以对所有请求起作用。所以拦截器不可以拦截能够直接访问的静态资源,而过滤器可以。
- 对于action请求来说,拦截器可以访问其上下文和值栈,过滤器不可以。
- 拦截器可以被多次调用,而过滤器只在程序初始化时调用一次。
- 重点:拦截器可以获取IOC容器中的bean,比如说拦截器可以调用service中的业务逻辑方法,而过滤器不可以!
- 重点:拦截器可以获取IOC容器中的bean,比如说拦截器可以调用service中的业务逻辑方法,而过滤器不可以!
- 重点:拦截器可以获取IOC容器中的bean,比如说拦截器可以调用service中的业务逻辑方法,而过滤器不可以!
- 触发时机不同:过滤器触发是在请求进入servlet之前,拦截器触发是在请求进入servlet之后。
画三个圈的话,就是过滤器包裹住servlet,servlet包裹住拦截器。