首页 > 代码库 > 【struts2】拦截器的工作模拟实现
【struts2】拦截器的工作模拟实现
Main.java
/** * 书本:【struts2】 * 功能:模拟拦截器的工作,实际就是递归的思想 * 文件:Main.java * 时间:2014年11月9日20:04:55 * 作者:cutter_point */ public class Main { public static void main(String [] args) { new ActionInvocation().invoke(); } }
ActionInvocation.java
/** * 书本:【struts2】 * 功能:模拟拦截器的工作 * 文件:ActionInvocation.java * 时间:2014年11月9日20:04:55 * 作者:cutter_point */ import java.util.ArrayList; import java.util.List; public class ActionInvocation { List<Interceptor> interceptors=new ArrayList<Interceptor>(); int index = -1; //来指示循环到了第几个interceptor了 Action a = new Action(); public ActionInvocation() //构造函数 { this.interceptors.add(new FirstInterceptor()); this.interceptors.add(new SecondInterceptor()); } public void invoke() { index ++; if(index >= this.interceptors.size()) { a.execute(); } else { this.interceptors.get(index).intercept(this); } } }
Interceptor.java
/** * 书本:【struts2】 * 功能:模拟拦截器的工作 * 文件:Interceptor.java * 时间:2014年11月9日20:04:55 * 作者:cutter_point */ public interface Interceptor { public void intercept(ActionInvocation invocation); }
FirstInterceptor.java
/** * 书本:【struts2】 * 功能:模拟拦截器的工作 * 文件:FirstInterceptor.java * 时间:2014年11月9日20:04:55 * 作者:cutter_point */ public class FirstInterceptor implements Interceptor { public void intercept(ActionInvocation invocation) { System.out.println(1); invocation.invoke(); System.out.println(-1); } }
SecondInterceptor.java
/** * 书本:【struts2】 * 功能:模拟拦截器的工作 * 文件:SecondInterceptor.java * 时间:2014年11月9日20:04:55 * 作者:cutter_point */ public class SecondInterceptor implements Interceptor { public void intercept(ActionInvocation invocation) { System.out.println(2); invocation.invoke(); System.out.println(-2); } }
Action.java
/** * 书本:【struts2】 * 功能:模拟拦截器的工作 * 文件:Action.java * 时间:2014年11月9日20:04:55 * 作者:cutter_point */ public class Action { public void execute() { System.out.println("execute!"); } }
struts2的拦截器说白了就是几个递归调用,这里代码可以执行以下,可以吧断点设置在new ActionInvocation().invoke();这里,然后一步一步地执行,然后一点一点的体会应该就懂了
记住就一点,递归调用
【struts2】拦截器的工作模拟实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。