过滤器和拦截器,我总结了5条区别:
1、拦截器是基于java的反射机制,而过滤器是基于函数回调
2、过滤器依赖于servlet容器,而拦截器不依赖servlet容器,struts中含有大量的拦截器
3、拦截器只对action起作用,而过滤器则可以对几乎所有的请求起作用
4、拦截器可以访问action上下文,值栈里的对象,而过滤器不是,过滤器是用Filter是用了责任链模式来实现的,请求值先到达Filter,根据Filter在web.xml的配置顺序一个个按顺序地处理,处理完以后,再按反顺序来处理响应信息,有点像是一个栈(先处理请求的Filter,后处理响应)。
5、在action的生命周期中,拦截器可以多次别调用,而过滤器只能在web.xml配置的,只有在容器初始化时被调用一次。