有关于Struts2的拦截器的原理

在此共设置了两个拦截器,firstInterception、SecondInterception

 package struts2_inteception;

 public class firstInterception implements Interception{
public void interceptor(ActionInvocaton invocation){
System.out.println("-1");
invocation.invoke();
System.out.println("1"); }
}
 package struts2_inteception;

 public class SecondInterception2 implements Interception{
public void interceptor(ActionInvocaton invocation){
System.out.println("-2");
invocation.invoke();
System.out.println("2"); }
}

主函数Main类

 package struts2_inteception;

 public class Main {
public static void main(String []args){
new ActionInvocaton().invoke();
} }

拦截器接口Interceptor

 package struts2_inteception;

 public interface Interception {
public void interceptor(ActionInvocaton actionInvocaton);
}

一个模拟struts2的Action类

package struts2_inteception;

public class Action {
public void execute(){
System.out.println("execute()方法的执行");
} }

一个ActionInvocation类,

package struts2_inteception;

import java.util.List;
import java.util.ArrayList; public class ActionInvocaton {
int index=-1;
Action action=new Action();
List<Interception> interceptions=new ArrayList<Interception>();
public ActionInvocaton(){
//在此调用一系列的拦截器
this.interceptions.add(new firstInterception());
this.interceptions.add(new SecondInterception2());
}
public void invoke(){
index++;
if (index>=interceptions.size()){
//调用action的方法
action.execute();
}else{
//调用拦截器中加的东西
this.interceptions.get(index).interceptor(this);
} } }

真正的struts2的拦截器执行过程如下:

执行的结果如下:

-1
-2
execute()方法的执行
2
1

最新文章

  1. Bootstrap之样式风格与下拉菜单
  2. Ext JS 6 新特性和工具
  3. ios NSString常见的字符串操作 分割 查找
  4. idHTTP访问百度
  5. Codeforces Round #188 (Div. 1) B. Ants 暴力
  6. noip2006T1 能量项链
  7. POJ 1637 混合图欧拉回路
  8. XML解析器(TinyXML)的使用指南
  9. 新iPhone开售现场:土豪金火了
  10. utf8 和 UTF-8 在使用中的差别
  11. (6)UIView常见属性二
  12. 多节点通过PPP连接,节点/用户/客户机之间互相访问ping
  13. 杂谈迁移tomcat项目到docker,以及遇到的问题
  14. [BUAA2017软工]第1次个人项目 数独
  15. ResNet152网络复现(Caffe)
  16. python 切片知识大全
  17. 数据库savepoint
  18. Windows Sockets错误标识及对应解释
  19. Linux下JDK、Tomcat安装及Web应用部署
  20. js调用父级frame中的方法

热门文章

  1. 【Android】2.0 Android开发环境的搭建——Eclipse
  2. JavaScript简易动画
  3. 浅谈Socket编程
  4. matlab练习程序(多线段交点)
  5. 互联网部-供应商团队js规范
  6. mac nvm install
  7. Using nxlog4go for Testing Environment
  8. 记录一次 sql在数据库可以查到 mybatis代码查不到的问题
  9. tensorflow报错 Key Conv/biases not found in checkpoint
  10. Sql Server中一次更新多列数据