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 执行了!!!
第二个拦截器结束
第一个拦截器结束

struts2拦截器执行模拟 参考马士兵老师的更多相关文章

  1. struts2拦截器的实现机制

    前言 最近老大让每周写一篇技术性的博客,想想也没啥写,就想着随便拿个以前的项目去研究研究五大框架的底层代码.本人水平有限,有不对的地方还望大家勿喷,指正! 开始之前先了解下strtus2的工作流程: ...

  2. Struts2拦截器的执行过程浅析

    在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...

  3. Struts2拦截器模拟

    前言: 接触Struts2已经有一段时间,Student核心内容就是通过拦截器对接Action,实现View层的控制跳转.本文根据自身理解对Struts2进行一个Java实例的模拟,方便大家理解! 示 ...

  4. Struts2拦截器总结

    拦截器的本质: 拦截器就是一个类,一个实现了超级接口Interceptor的类.Interceptor接口里定义了三个方法 init(),destory(),intercept().其中inercep ...

  5. struts2(五)之struts2拦截器与自定义拦截器

    前言 前面介绍了struts2的输入验证,如果让我自己选的话,肯定是选择xml配置校验的方法,因为,能使用struts2中的一些校验规则,就无需自己编写了, 不过到后面应该都有其他更方便的校验方法,而 ...

  6. Struts2拦截器说明

    有关于Struts2的拦截器的原理 在此共设置了两个拦截器,firstInterception.SecondInterception package struts2_inteception; publ ...

  7. Struts2拦截器原理

    拦截器是struts2处理的核心,本文主要说struts2的拦截器的基本原理/实现,其它框架处理的东西就不说了,得自己再看了.struts2版本:2.2.3当一个请求来了后,从org.apache.s ...

  8. 7.Struts2拦截器及源码分析

    1.Struts2架构图 2.Struts2 执行过程分析 1.首先,因为使用 struts2 框架,请求被Struts2Filter 拦截 2.Struts2Filter  调用 DisPatche ...

  9. struts2动态调用+Servlet过滤器+struts2拦截器

    周末真的是懒到心慌...... 本文是在完整s2sh项目基础上添加的,不太了解s2sh项目构建的朋友可以先参考一下这几篇文章: eclipse环境下基于tomcat-7.0.82构建struts2项目 ...

随机推荐

  1. Win10系列:UWP界面布局进阶1

    全新的Windows 10 操作系统支持多种视图模式,用户可以根据需要选择不同的视图模式显示应用.当用户同时浏览或操作多个应用程序时,可以将应用视图调整为辅屏视图或填充视图,这样在一个屏幕中可以同时对 ...

  2. jquery 操作table样式拖动参考

    参考: http://blog.csdn.net/kdiller/article/details/6059727 http://www.jb51.net/article/59795.htm

  3. (Java学习笔记) Java Threading (Java线程)

    Java Threading (Java线程) ● Process & Thread Processes are the abstraction of running programs: A ...

  4. 怎样在Ubuntu 14.04中安装Java(转)

    想知道如何在Ubuntu 14.04中安装Java?安装Java肯定是安装Ubuntu 14.04后首先要做的几件事情之一(见http://www.linuxidc.com/Linux/2014-04 ...

  5. OpenStack之queens版本创建负载均衡器时报错问题!

    采用kolla-ansible部署完毕后,创建负载均衡器时会提示如下的报错 解决办法: 修改网络节点的neutron-lbaas-agent容器 进入lbaas容器里 [root@openstack0 ...

  6. SharePoint Framework 企业向导(二)

    博客地址:http://blog.csdn.net/FoxDave 开发者视角 SharePoint开发者,无论是新手还是有经验的,都可以从SPFx中获取一些东西.当前SPFx的发布版本专注于以一 ...

  7. it网站

    1:http://www.importnew.com/    importnew  专注于java的论坛 2:Github是最活跃的开源代码库和版本控制平台,可以说是程序员当中知名度最高的技术社区.各 ...

  8. TransactionScop事务机制的使用

    如果在C#中使用TransactionScope类(分布式事务),则须注意如下事项:1.在项目中引用using System.Transactions命名空间(先要在添加net组件的引用); 2.具体 ...

  9. ESP8266 上报数据到贝壳物联

    下面贴上代码: #include <aJSON.h> #include <SPI.h> #include <Wire.h> #include <dht11.h ...

  10. Beta阶段冲刺---Day3

    一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 昨天已完成的工作: (1)数字以扑克牌的形式给出 (2)答案的乘除符号与游戏中的符号保持一致. 今天计划完成的工作 (1)闯关模式 ...