个人理解:
filter过滤器是java web在请求之前提前过滤掉一些信息,或者设置参数,支持过滤所有url,然后传到action方法中进行业务操作。
interceptor拦截器是利用面向切面编程在一个方法之前调用方法,或在方法之后调用方法实现,也可以在抛出异常时进行业务逻辑操作。
具体区别:
(1)拦截器是基于java的反射机制的,而过滤器是基于函数回调。
(2)拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
(3)拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
(4)拦截器可以访问action上下文、值栈里的对象,而过滤器不能。
(5)在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。