读书人

Struts2中的拦截器栈兑现原理

发布时间: 2012-11-06 14:07:00 作者: rapoo

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--------

读书人网 >软件架构设计

热点推荐