`
dreamoftch
  • 浏览: 496513 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

模拟struts2的拦截器的流程

阅读更多

 

 

package com.tch.test.struts2.interceptor;

import java.util.Iterator;
import java.util.List;

public class ActionInvocation {
	
	private List<Interceptor> interceptors;
	private Iterator<Interceptor> iterator;

	public void invoke(){
		if(hasNext()){
			getInterceptor().intercept(this);
		}else{
			System.out.println("调用action方法");
		}
	}

	Interceptor getInterceptor(){
		return iterator.next();
	}
	private boolean hasNext() {
		return iterator.hasNext();
	}

	public List<Interceptor> getInterceptors() {
		return interceptors;
	}

	public void setInterceptors(List<Interceptor> interceptors) {
		this.interceptors = interceptors;
		this.iterator = interceptors.iterator();
	}
	
}

 

package com.tch.test.struts2.interceptor;

public interface Interceptor {

	void intercept(ActionInvocation invocation);
	
}

 

package com.tch.test.struts2.interceptor;

public class FirstInterceptor implements Interceptor {

	@Override
	public void intercept(ActionInvocation invocation) {
		System.out.println("begin >>> first...");
		invocation.invoke();
		System.out.println("end  <<<  first");
	}

}

 

package com.tch.test.struts2.interceptor;

public class SecondInterceptor implements Interceptor {

	@Override
	public void intercept(ActionInvocation invocation) {
		System.out.println("begin >>> second...");
		invocation.invoke();
		System.out.println("end  <<<  second");
	}

}

 

package com.tch.test.struts2.interceptor;

public class ThirdInterceptor implements Interceptor {

	@Override
	public void intercept(ActionInvocation invocation) {
		System.out.println("begin >>> third...");
		invocation.invoke();
		System.out.println("end  <<<  third");
	}

}

 

package com.tch.test.struts2.interceptor;

public class FourthInterceptor implements Interceptor {

	@Override
	public void intercept(ActionInvocation invocation) {
		System.out.println("begin >>> fourth...");
		invocation.invoke();
		System.out.println("end  <<<  fourth");
	}

}

 

package com.tch.test.struts2.interceptor;

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

public class TestInterceptor {

	public static void main(String[] args) {
		List<Interceptor> interceptors = new ArrayList<Interceptor>();
		FirstInterceptor first = new FirstInterceptor();
		SecondInterceptor second = new SecondInterceptor();
		ThirdInterceptor third = new ThirdInterceptor();
		FourthInterceptor fourth = new FourthInterceptor();
		interceptors.add(first);
		interceptors.add(second);
		interceptors.add(third);
		interceptors.add(fourth);
		ActionInvocation invocation = new ActionInvocation();
		invocation.setInterceptors(interceptors);
		invocation.invoke();
	}
	
}

 

 

OK。。。

 

 

 

 

 

分享到:
评论

相关推荐

    struts2拦截器实现原理模拟 2013-8-8

    拦截器是Struts2框架中的核心组件之一,它在MVC(Model-View-Controller)架构中扮演着重要角色,实现了灵活的业务逻辑处理和请求流程控制。本文将深入探讨Struts2拦截器的工作原理及其应用。 首先,我们要理解什么...

    模拟一个拦截器

    这个压缩包可能包含了一个模拟Struts2拦截器的示例项目。通过解压并分析源代码,我们可以学习如何创建和配置拦截器。例如,可能有一个名为`MyCustomInterceptor`的类,实现了特定的业务逻辑,然后在`struts.xml`中...

    Struts通过拦截器实现登录后跳转到登录前页面

    在Struts2中,拦截器扮演着非常重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如验证、日志、事务管理等。本话题主要探讨如何利用拦截器实现在用户成功登录后,将其重定向到登录前访问的页面。 首先,...

    struts2简单模拟

    2. **拦截器**:Struts2的核心特性之一是拦截器。拦截器在Action调用前后执行,用于添加通用功能,如日志记录、事务管理、性能监控等。它们可以通过配置文件灵活地组合和插入到请求处理流程中。 3. **插件支持**:...

    模拟struts2框架代码.rar_模拟struts框架

    总结来说,模拟Struts2框架的实现主要包括以下几个部分: 1. 创建Action类并定义业务逻辑方法。 2. 配置Action映射,指定Action类、方法和URL路径。 3. 实现和配置拦截器,以增强Action的执行过程。 4. 设计视图层...

    Struts2运行流程测试

    在本文中,我们将深入理解Struts2的运行流程,并通过单元测试来验证其完整的工作机制,特别是涉及拦截器、验证框架和Result。 首先,让我们回顾一下Struts2的运行流程。当一个HTTP请求到达服务器时,Struts2框架会...

    servlet模拟struts1工作原理

    本文将通过使用Servlet来模拟Struts1的工作流程,深入理解其核心机制。 首先,让我们探讨Struts1的基本架构。Struts1框架的核心组件包括ActionServlet、ActionForm、Action、Tiles以及配置文件(struts-config.xml...

    模拟struts2代码+文档

    这个"模拟Struts2代码+文档"的压缩包很可能包含了一个简化的Struts2应用实例和相关的技术文档,帮助初学者理解Struts2的工作原理和实践操作。 Struts2的核心特性包括: 1. **Action类**:在Struts2中,Action类是...

    struts2如何使用拦截器进行用户权限控制实例

    在本例中,我们使用Struts2框架搭建一个简单的Demo,模拟用户权限控制的实现流程。首先,我们创建了三个不同身份的用户:commen用户、VIP用户和管理员。然后,我们在struts.xml文件中定义了三个Action,分别对应...

    模拟struts2

    总的来说,模拟Struts2环境是学习和理解MVC框架以及Java Web开发的一个良好途径。通过对配置文件的调整和实际代码的编写,开发者可以深入掌握Struts2的工作原理和最佳实践。同时,熟悉反射机制对于理解框架的内部...

    struts1和struts2的区别

    - **Struts2**: 支持为每个Action定义不同的拦截器堆栈(Interceptor Stacks),这意味着可以根据不同的Action来配置不同的拦截器组合,增加了灵活性。 通过上述对比可以看出,Struts2相比Struts1在很多方面进行了...

    Struts2单元测试

    2. **Interceptor测试**:拦截器是Struts2中强大的功能,可以在请求处理流程中插入自定义逻辑。测试拦截器需要确保它们在正确的时间点被调用,以及它们如何影响Action的执行流程。通过Mockito或EasyMock等工具,可以...

    模拟Struts责任链工作流及简单AOP实现

    在Struts2中实现AOP主要通过自定义拦截器来完成。首先,我们需要创建一个实现了Interceptor接口的类,然后在这个类中定义before()和after()方法,分别对应拦截器在Action执行前和后的操作。接下来,我们需要在struts...

    Struts2调试方法

    5. **理解拦截器**:拦截器是Struts2的重要特性,它们在Action执行前后执行。调试时,可以观察拦截器的顺序和逻辑,看是否按预期工作。 6. **查看Action上下文**:Struts2的ActionContext封装了当前请求的所有上...

    Struts2资源

    下面是一个简单的Struts2示例代码分析,演示了如何使用Servlet模拟Struts的基本步骤。 1. **main.jsp**:首页,包含一个链接指向登录页面。 2. **login.jsp**:登录表单页面,用户填写用户名和密码后提交表单。 3. ...

    利用java反射模拟struts2工作.doc

    总结来说,通过Java反射和XML解析,我们可以模拟Struts2的工作流程:解析配置文件,根据请求找到相应的Action,动态调用方法,处理结果。尽管这可能与Struts2的实际实现有所不同,但它可以帮助我们理解框架的核心...

    Struts2的简单模拟

    3. **拦截器(Interceptor)**:Struts2使用拦截器链来处理请求,拦截器可以实现如日志记录、权限检查等功能。默认的拦截器栈包括了`params`(处理请求参数)、`validation`(表单验证)和`exception`(异常处理)等...

    struts2测试工具

    Struts2提供了丰富的特性,包括动作映射、结果类型、拦截器、插件支持以及与Spring等其他框架的集成,使得开发者能够构建出高效、可维护的Web应用。 标题提到的“struts2测试工具”可能是指用于测试Struts2应用程序...

    用servlet模拟struts_mvc框架

    在实际项目中,Struts框架提供了更高级的功能,如ActionForm对象收集表单数据,Action类处理业务逻辑,Tiles组件管理视图布局,以及一系列的拦截器来增强功能和性能。但通过Servlet模拟Struts_MVC,我们可以了解其...

Global site tag (gtag.js) - Google Analytics