11月12日(servlet filter 和 struts2的 interceptor)
今天学习了interceptor的用法。感觉很filter和类似。不知道他们之间的区别,于是上网搜索。找到了下面的答案
首先从表现形式上来说,两者确实很相似,同样可以在你写的jsp、servlet代码的前后加入其它的动作,但是两者是有本质区别的。
1、 filter基于回调函数,我们需要实现的filter接口中doFilter方法就是回调函数,而interceptor则基于java本身的反射机制,如果对这种形式不了解,可以去看看java是如何实现动态代理的,这是aop的基础。这是两者最本质的区别。
2、 filter是依赖于servlet容器的,即只能在servlet容器中执行,很显然没有servlet容器就无法来回调doFilter方法。而interceptor与servlet容器无关。
ps.这种动态代理action的方法实在是太优雅了。action和interceptor的耦合完全放在了配置文件中。热插拔啊~~~!!!