拦截器和过滤器 :
1 、拦截器是基于java的反射和动态代理,而过滤器是基于函数回调。
2 、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
3 、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4 、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
5 、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
上面是查到的资料,而且好像都这么说。
我个人的感觉,拦截器和过滤器在作用上没有什么本质上的区别,都是为了拦截一些请求。 过滤器是基础级存在,一般有servlet,就存在过滤器。 拦截器是我们自己实现,属于框架级别的操作。 拦截器最经典的应该是struts,现在应该是spring aop实现的。 至于执行顺序, ruby中有一段很好的描述,就是 子弹穿过洋葱