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  执行了!!!
    第二个拦截器结束
    第一个拦截器结束
  • 相关阅读:
    介绍Collection框架的结构;Collection 和 Collections的区别
    Mybites和hibernate的优缺点和区别2
    Mybites和hibernate的优缺点和区别
    AJAX如何获取从前台传递过来的数据然后在通过servle传递给后台
    list map set 集合的区别
    乐观锁和悲观锁的区别
    python生产消费Kafka
    python类型转换
    python实现远程方法调用
    Scala常用数据结构
  • 原文地址:https://www.cnblogs.com/Danial7777777/p/9145923.html
Copyright © 2011-2022 走看看