zoukankan      html  css  js  c++  java
  • struts2拦截器执行模拟 参考马士兵老师

    public class ActionProxy {
        
        public static void main(String[] args) {
           
            //模拟ActionProxy调用invoke()方法
            ActionInvocation invocation=new ActionInvocation();
            invocation.invoke();
        }
    }
    public class ActionInvocation {
        
        //成员变量  拦截器数组,访问的action 对象
        List<Interceptor> list=new ArrayList<>();
        Action action=new Action();
        private int index=-1;
        
        //初始化list对象,装inceptor对象
        public ActionInvocation() {
            FirstInterceptor firstInterceptor=new FirstInterceptor();
            SecondInterceptor secondInterceptor=new SecondInterceptor();
            this.list.add(firstInterceptor);
            this.list.add(secondInterceptor);
        }
        
        public void invoke(){
            index++;            
            if (index>list.size()-1) {
                //拦截器已经执行完,执行action
                action.execute();
            }else {
                //调用拦截器的拦截方法
                list.get(index).intercept(this);
            }
        }
        
    }
    public interface Interceptor {
    
        public void intercept(ActionInvocation invocation);
    }
    public class FirstInterceptor implements Interceptor{
    
        @Override
        public void intercept(ActionInvocation invocation) {
            // TODO Auto-generated method stub
            //前处理
            System.out.println("第一个拦截器开始");
            //调用invocation 的invoke方法
            invocation.invoke();
            //后处理
            System.out.println("第一个拦截器结束");
        }
    
    }
    public class SecondInterceptor implements Interceptor{
    
        @Override
        public void intercept(ActionInvocation invocation) {
            // TODO Auto-generated method stub
            //前处理
            System.out.println("第二个拦截器开始");
            //调用invocation 的invoke方法
            invocation.invoke();
            //后处理
            System.out.println("第二个拦截器结束");
        }
    
    }
    public class Action {
    
        public void execute(){
            System.out.println("action  执行了!!!");
        }
    }
    result:
    第一个拦截器开始
    第二个拦截器开始
    action  执行了!!!
    第二个拦截器结束
    第一个拦截器结束
  • 相关阅读:
    windows8安装docker(tool box)
    windows8 使用docker创建第一个nodejs运行环境
    nodejs使用fetch获取WebAPI
    Nodejs获取Azure Active Directory AccessToken
    使用Bot Service创建Bot Framework
    安装Team Services Agent Win7
    Nodejs微信与Bot framework通过Direct Line连接
    修改cmd默认启动路径
    less配置
    javascript滚动到大于一定距离显示隐藏
  • 原文地址:https://www.cnblogs.com/Danial7777777/p/9145923.html
Copyright © 2011-2022 走看看