http://blog.sina.com.cn/s/blog_3fc4c0a80100kd6h.html
“说一下你对spring Aop的理解,和实际开发中哪些地方会用到?”面试官这样问我。
(瞬间头脑风暴)AOP *是spring中提倡的面向切面编程,切面是有很多切点组成,根据业务需要在某一切点出加入操作代码* 还是面试前别人的理解,
我就猜了一个拦截器和日志处理。
于是,回来就看了一下struts2中的拦截器,因为我不确定拦截器到底是 属于谁的?
一下为 链接除的解释:(说的很明白,还好面试的时候蒙对了跟我理解的一样)
到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。
实现原理
Struts 2已经提供了丰富多样的,功能齐全的拦截器实现。这些都在struts2-all-2.0.1.jar或struts2-core-2.0.1.jar包的struts-default.xml中有了定义。下面几个是在项目中用到了的。
<interceptor name ="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingIntercep
<interceptor name ="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
<interceptor name ="static-params"class="com.opensymphony.xwork2.interceptor.StaticParametersIntercep
<interceptor name ="timer" class ="com.opensymphony.xwork2.interceptor.TimerInterceptor" />
<interceptor name="validation"class="com.opensymphony.xwork2.validator.ValidationInterceptor"/>
<interceptor name ="workflow" class="com.opensymphony.xwork2.interceptor.DefaultWorkflowIntercept
异常拦截器集成了主要的异常处理功能,如果action执行期间由于异常返回,那么拦截器允许把一个异常映射到一段结果代码,而不是直接抛出,这为处理异常结果提供了一个方便的途径。
Validation拦截器主要是在action的方法执行之前进行一些验证工作,如果验证工作不通过,那么就不继续执行action的execute方法。
其实Struts2定义的拦截器还有许多许多,还有很多需要学习的。这里就写这么多吧。
自定义拦截器
自定义一个拦截器通常有以下几个步骤。
2>通过<interceptor>元素来定义拦截器;
3>通过<interceptor-ref>元素来使用拦截器。
这里,关于使用接口实现,下面是拦截器接口的源代码。自己稍微添加了一下注释。
public interface Interceptor extends Serializable {
// 销毁分配给拦截器的资源
}