首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2中的拦截器栈兑现原理

2012-11-06 
Struts2中的拦截器栈实现原理一个Interceptor接口public interface Interceptor {void intercept(ActionIn

Struts2中的拦截器栈实现原理
一个Interceptor接口

public interface Interceptor {
void intercept(ActionInvocation invocation);
}

一个ActionInvocation类用于调用拦截器

/**
* 保存着 很多interceptor
* @author Administrator
*
*/
public class ActionInvocation {

List<Interceptor> interceptors = new ArrayList<Interceptor>();
public ActionInvocation(){
  interceptors.add(new ParamInterceptor());
  interceptors.add(new ConfigInterceptor());
}
private int i = 0;
public void invoke(){
  if(i< interceptors.size()){
   Interceptor it = interceptors.get(i++);
   //调用 方法前
   it.intercept(this);
   //调用 方法后
  }else{

     //调用Action中的execute方法
   new Action().execute();
  }
 
};
}

Interceptor的实现类

public class ConfigInterceptor implements Interceptor{
public void intercept(ActionInvocation invocation) { 
  System.out.println("------ConfigFilter----");
  invocation.invoke();
}
}

public class ParamInterceptor implements Interceptor{
public void intercept(ActionInvocation invocation) {
  System.out.println("------ParamFilter----");
  invocation.invoke();
}
}

//main 来调用

public class Main {

/**
  * @param args
  */
public static void main(String[] args) {
  new ActionInvocation().invoke();

}

}

输出为:

------ParamFilter----
------ConfigFilter----
----action--------

热点排行