1、拦截器的概述
拦截器就是AOP(Aspect-Oriented Programming)的一种实现。(AOP是指用于某个方法或字段被访问之前,进行拦截,然后在之前或之后加入某些操作。)
* 过滤器:过滤从客户端发送到服务器端请求的
* 拦截器:拦截对目标Action中的某些方法进行拦截
> 拦截器不能拦截JSP
> 拦截到Action中某些方法
2、拦截器和过滤器的区别
1)拦截器是基于JAVA反射机制的,而过滤器是基于函数回调的
2)拦截器不依赖于Servlet容器,而过滤器依赖于Servlet容器
3)拦截器只能对Action请求起作用(Action中的方法),而过滤器可以对几乎所有的请求起作用(CSS、JSP、JS)
* 拦截器:采用责任链模式
> 在责任链模式里,很多对象由每一个对象对其下的引用而连接起来形成一条链
> 责任链每一个节点,都可以继续调用下一个节点,也可以阻止流程继续执行
* 在Struts2中可以定义很多个拦截器,将多个拦截器按照特定顺序组成拦截器栈(顺序调用栈中的每一个拦截器)