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 

posted @ 2012-02-07 18:18  万法自然~  阅读(214)  评论(0编辑  收藏  举报