• 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  执行了!!!
    第二个拦截器结束
    第一个拦截器结束
  • 相关阅读:
    NIS server on centOS 7
    fabric-python-基于centos 7
    玩玩Jenkins
    身份认证技术性能对比
    Linux时区设置和时间同步-基于CentOS 6(最小安装)
    openldap+phpadmin的最简安装和配置
    tomcat8.5的网页管理(远程)配置、SSL证书配置-基于Debian 9
    tomcat添加为service服务-基于Debian 9
    安装、配置MySQL5.8基于Debian 9(用apt-get install 默认安装结果是mariadb)
    下载并配置jdk环境-基于debain 9
  • 原文地址:https://www.cnblogs.com/Danial7777777/p/9145923.html
Copyright © 2020-2023  润新知