【struts2】拦截器的工作模拟实现

Main.java

/**
* 书本:【struts2】
* 功能:模拟拦截器的工作,实际就是递归的思想
* 文件:Main.java
* 时间:2014年11月9日20:04:55
* 作者:cutter_point
*/
public class Main 
{
	public static void main(String [] args)
	{
		new ActionInvocation().invoke();
	}
}


ActionInvocation.java

/**
* 书本:【struts2】
* 功能:模拟拦截器的工作
* 文件:ActionInvocation.java
* 时间:2014年11月9日20:04:55
* 作者:cutter_point
*/

import java.util.ArrayList;
import java.util.List;

public class ActionInvocation 
{
	List<Interceptor> interceptors=new ArrayList<Interceptor>();
	int index = -1;	//来指示循环到了第几个interceptor了
	Action a = new Action();
	
	public ActionInvocation()	//构造函数
	{
		this.interceptors.add(new FirstInterceptor());
		this.interceptors.add(new SecondInterceptor());
	}
	
	public void invoke()
	{
		index ++;
		if(index >= this.interceptors.size())
		{
			a.execute();
		}
		else
		{

			this.interceptors.get(index).intercept(this);
		}
	}
}


Interceptor.java

/**
* 书本:【struts2】
* 功能:模拟拦截器的工作
* 文件:Interceptor.java
* 时间:2014年11月9日20:04:55
* 作者:cutter_point
*/
public interface Interceptor 
{
	public void intercept(ActionInvocation invocation);
}


FirstInterceptor.java

/**
* 书本:【struts2】
* 功能:模拟拦截器的工作
* 文件:FirstInterceptor.java
* 时间:2014年11月9日20:04:55
* 作者:cutter_point
*/
public class FirstInterceptor implements Interceptor 
{

	public void intercept(ActionInvocation invocation) 
	{
		System.out.println(1);
		invocation.invoke();
		System.out.println(-1);
	}

}


SecondInterceptor.java

/**
* 书本:【struts2】
* 功能:模拟拦截器的工作
* 文件:SecondInterceptor.java
* 时间:2014年11月9日20:04:55
* 作者:cutter_point
*/
public class SecondInterceptor implements Interceptor 
{

	public void intercept(ActionInvocation invocation) 
	{
		System.out.println(2);
		invocation.invoke();
		System.out.println(-2);
	}

}


Action.java


/**
* 书本:【struts2】
* 功能:模拟拦截器的工作
* 文件:Action.java
* 时间:2014年11月9日20:04:55
* 作者:cutter_point
*/
public class Action 
{
	public void execute()
	{
		System.out.println("execute!");
	}
}

struts2的拦截器说白了就是几个递归调用,这里代码可以执行以下,可以吧断点设置在new ActionInvocation().invoke();这里,然后一步一步地执行,然后一点一点的体会应该就懂了

记住就一点,递归调用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值