java中filter与interceptor的区别。是不是说一般用struts框架就不会用到filter了?

如题所述

任何通过Struts,或是JSF的Controller Servlet处理的request,都会在过滤器中先行处理(filter),才把控制权交还给Struts或是JSF,这时interceptor才起作用。注意这个顺序使用一种通俗的方式来讲是:filter在进入网页时选择,interceptor在提交业务过程中进行拦截,来加入需要的另外加入的业务逻辑。个人愚见
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-19
1、 filter基于回调函数,我们需要实现的filter接口中doFilter方法就是回调函数,而interceptor则基于java本身的反射机制,如果对这种形式不了解,可以去看看java是如何实现动态代理的,这是aop的基础。这是两者最本质的区别。

2、 filter是依赖于servlet容器的,即只能在servlet容器中执行,很显然没有servlet容器就无法来回调doFilter方法。而interceptor与servlet容器无关。
第2个回答  2013-07-19
首先从表现形式上来说,两者确实很相似,同样可以在你写的jsp、servlet代码的前后加入其它的动作,但是两者是有本质区别就是楼上那位帅哥说了那两点。 是不是说一般用struts框架就不会用到filter了? 这个问题回答是否定了。struts2 就用filter来做中心控制器,你能说没有用到filter嘛。。
相似回答