读书人

Struts2的魂Interceptor

发布时间: 2012-08-31 12:55:03 作者: rapoo

Struts2的灵魂——Interceptor

转自:http://www.iteye.com/topic/1121396

1.什么是拦截器:?
拦截器是动态拦截Action调用的对象。它提供了一种机制使得开发者可以定义action执行之前或之后执行的代码,也可以在一个action执行前阻止其执行。?

2.AOP:?
提到拦截器,我们不得不提到AOP.?
AOP(Aspect-Oriented Programming)译为:“面向切面编程”或者“面向方面编程”。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。拦截器的就是实现AOP的一种策略。?
拦截器的工作原理简略图:?Struts2的魂——Interceptor?


3.拦截器的作用:?
? 我们可以用Interceptor在Action的方法执行之前或者之后做一些处理,struts的核心功能正是由拦截器来实现的,比如捕获异常、数据校验、安全审查等等。?

4.拦截器的工作原理:?
Interceptor Stack(拦截器堆)中有顺序的存储着多个Interceptor,他们联接成链状,然后按照添加的顺序,依次调用。这里用到了递归调用,我认为这是设计者的聪明之处。?
DefaultActionInvocation类持有拦截器链的引用,以及action的引用,是控制递归调用的重要类。?
关于递归更深入的探讨,请猛击:http://candy-code.iteye.com/blog/1443427?
下面我们就来模拟一下Interceptor的工作原理?
5.Interceptor模拟:?

Invocation.java?



return????
  • ???

    相信看到输出结果之后,不用过多的解释,你也会对Interceptor的工作原理有更具体的了解了。?

    补充:本文中之所以只谈递归,不谈模式,是为了让读者更深刻更具象的了解底层原理。

  • 读书人网 >编程

    热点推荐