filter和拦截器的区别
Filter和拦截器的主要区别如下:
1. 基于的机制不同:Filter是基于函数的回调机制,而拦截器是基于Java的反射机制。
2. 应用场景不同:Filter主要针对访问请求的过滤,可以做到每个请求只有一次的过滤要求;而拦截器主要侧重于拦截Controller的对象,做一些参数填充等工作。
3. 执行时间点不同:Filter只在容器初始化时被调用一次;而拦截器有三个执行时间点,分别对应三个方法:preHandle(),postHandle(),afterCompletion()。
4. 拦截范围不同:Filter可以处理jsp,js,html等请求;而拦截器只拦截action请求,不拦截静态资源请求。

5. 访问范围不同:过滤器不能访问action上下文及值栈里的对象,而拦截器可以。
6. 依赖性不同:Filter需要依赖Servlet容器,而拦截器是在spring容器中,不依赖servlet容器。
7. 调用次数不同:拦截器在action的生命周期内可以多次调用,而过滤器只在容器初始化时被调用一次。
8. 获取容器内的对象:拦截器可以获取spring容器里的对象,而过滤器是不行的。