Struts2 & 拦截器堆栈(Interceptor Stacks)
Struts2的拦截器堆栈(Interceptor Stacks)是一个典型的责任链模式的应用。
首先将整个执行划分成若干相同类型的元素,每个元素具备不同的逻辑责任,并将他们纳入到一个链式的数据结构中(堆栈)。
而每个元素又有责任负责链式结构中下一个元素的执行调用。
Struts2的Interceptor一层一层,把Action包裹在里面。
这样的结构有一下一些特点:
1、整个结构就如同一个堆栈,除了Action以外,堆栈中的其他元素是Interceptor
2、Action位于堆栈的底部,由于堆栈“先进后出”的特性,如果我们试图把Action拿出来执行,我们必须首先把位于Action上的Interceptor拿出来执行。
这样,整个执行就形成了一个递归调用。
3、每个位于堆栈中的Interceptor,除了需要完成它自身的逻辑,还需要完成一个特殊的执行职能。
这个执行职责有三种选择:
1)中止整个执行,直接返回一个字符串作为resultCode
2)通过递归调用负责调用堆栈中下一个Interceptor的执行
3)如果在堆栈内已经不存在任何Interceptor,调用Action
来源:
http://wenku.baidu.com/view/90b6bac48bd63186bcebbc70.html