2.拦截器的作用:
(1).DRY原则:Dont't Repeat Yourself.
(2).拦截器在设计和程序结构上的优点:
拦截器能把很多功能从Action中独立出来,分散到不同的拦截器里面,减少了Action的代码。如此,拦截器和Action本身的功能都更单一了。当通用的功能代码被封装在拦截器里面(代码模块化),就可以对不同的Action,根据功能需要,来配置相应功能的拦截器了。提高了拦截器所实现的功能的重用性,也变相实现了装配式和可插拔式的体系结构,使得整个系统结构变得更灵活。
a>.简化Action的实现
b>.功能更单一
c>.通用代码模块化
d>.提高重用性
注意:
拦截器采用责任链 模式 :
(1).在责任链模式里,很多对象由每一个对象对其下一个的引用而连接起来形成一条链。
(2).责任链每一个节点,都可以继续调用下一个节点,也可以阻止流程继续执行
3.拦截器与过滤器的区别(要深刻理解):
(1).拦截器是基于java反射和动态代理机制的,而过滤器是基于方法回调的。
(2).过滤器依赖于servletAPI,而拦截器不依赖于servletAPI。
(3).拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
(4).拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。