有关于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

Struts2拦截器说明的更多相关文章

  1. Struts2 拦截器配置以及实现

    @(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...

  2. struts2 拦截器

    拦截器:对Action的访问.可以拦截到Action中某个方法.与过滤器不同,过滤器过滤的是请求.过滤JSP.html.但是拦截器不能拦截jsp.html的访问. Struts2 拦截器在访问某个 A ...

  3. Struts2拦截器的使用 (详解)

    Struts2拦截器的使用 (详解) 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈default ...

  4. struts2拦截器

    一.自定义拦截器 struts2拦截器类似于servlet过滤器 首先定义一个拦截器这个拦截器实现了Interceptor接口: package cn.orlion.interceptor; impo ...

  5. Struts2拦截器模拟

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

  6. Struts2拦截器初涉

    Struts2拦截器初涉 正在练习struts,本例是从一个pdf上摘抄的例子,那本pdf都不知道叫什么名字,不过感觉很适合初学者. 在这里要实现一个简单的拦截器"GreetingInter ...

  7. 浅谈Struts2拦截器的原理与实现

    拦截器与过滤器           拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了 ...

  8. 基于SSH2框架Struts2拦截器的登录验证实现(转)

        大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了.那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证.     修改数 ...

  9. struts2拦截器interceptor的三种配置方法

    1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...

  10. Struts2拦截器原理以及实例

    一.Struts2拦截器定义 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. ...

随机推荐

  1. scss-传递内容块到@mixin

    样式块被传递给混入用于放置内的样式.在@content指令的位置,样式被包含进mixin. 内容块被传递到块被定义一个混合的范围进行计算. 下面的例子演示了mixin使用内容块的SCSS代码: @mi ...

  2. SQLAlchemy的使用---增删改查

    #通过SQLAlchemy对数据库进行增删改查 # 想要操作数据库 先要打开数据库连接 from create_table import engine # 创建会话 - 打开数据库连接 from sq ...

  3. Vue2.0+Node.js+MongoDB全栈打造商城系统

    vue.js +axios mock数据 在main.js中 import axios from 'axios' Vue.prototype.$ajax = axios webpack.dev.con ...

  4. 转:ITopologicalOperator Buffer调用异常的解决方法(来源网络)

      /// <summary>   /// 用拓扑分析求出缓冲区范围.   /// 由于ArcGIS的问题,有时调用会出异常,因此需要循环调用   /// </summary> ...

  5. oracle查询时间

    oracle查询和时间有关的命令: 方法一:select * from dual where time between to_date('2012-06-18 00:00:00','yyyy-mm-d ...

  6. (四)svn 服务器端的使用之创建工程目录

    仓库中存放开发项目代码.文档等,需要创建一个工程目录. 在之前创建的仓库中右键点击: 创建成功 trunk:项目开发代码的主体,是从项目开始直到当前都处于活动的状态,从这里可以获得项目最新的源代码以及 ...

  7. python下的selenium安装

    安装python 打开 Python官网,找到“Download”, 在其下拉菜单中选择自己的平台(Windows/Mac),一般的Linux平台已经自带的Python,所以不需要安装,通过打开“终端 ...

  8. day3 函数、递归、及内置函数

    请查看我的云笔记链接: http://note.youdao.com/noteshare?id=7d5aa803981ae4375a1f648f48e7ade3&sub=5DFD553A6C5 ...

  9. Linux xclock打不开时钟终端

    一般执行该操作的都是在安装oracle数据库或其他应用时,需要测试是否可以正常弹层执行的: 网络关于这个的描述和处理大片片的,但是符合自己实际情况的,还是需要直接去确认: 两步处理: 第一步: 使用r ...

  10. CDS view注解解析 - @Environment.systemField

    下面的CDS view使用到了@Environment.systemField这个注解,定义了两个参数#SYSTEM_LANGUAGE和#USER. 这个view从CRM物料主数据的产品抬头表COMM ...