Struts2拦截器原理
Struts2拦截器原理
(2012-12-19 23:44:00)
标签:
it |
package com.kero99.wp.struts;
public class ActionProxy {
}
ActionProxy 用于模拟程序的入口
package com.kero99.wp.struts;
public interface ActionInvocation {
}
ActionInvocation规定Invocation类应具备的方法
package com.kero99.wp.struts;
public interface Interceptor {
}
Interceptor接口规定了拦截器应具备的方法
package com.kero99.wp.users;
import com.kero99.wp.struts.ActionInvocation;
import com.kero99.wp.struts.Interceptor;
public class SQInterceptor implements Interceptor{
}
package com.kero99.wp.users;
import com.kero99.wp.struts.ActionInvocation;
import com.kero99.wp.struts.Interceptor;
public class ZJKInterceptor implements Interceptor{
}
按照接口Interceptor规范,制作的两个事例实现类。并在方法内调用方法invoke();
package com.kero99.wp.users;
public class UsersAction {
}
制作UsersAction类。
package com.kero99.wp.struts;
import java.util.ArrayList;
import java.util.List;
import com.kero99.wp.users.SQInterceptor;
import com.kero99.wp.users.UsersAction;
import com.kero99.wp.users.ZJKInterceptor;
public class DefaultActionInvocation implements ActionInvocation{
}
构造函数中创建所有连接器对象和Action对象,每次调用invoke执行拦截容器中一个连接器。每次连接器中的interceptor方法被调用时会继续调用invoke方法,这样每一个拦截器的调用invoke方法之前的代码全部都会依次执行完成后,执行action的对应方法。Invoke方法执行完成回到调用处,每一个连接器的interceptor方法中调用invoke方法之后的代码才会逆序执行。