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框架中的核心组件之一,它在MVC(Model-View-Controller)架构中扮演着重要角色,实现了灵活的业务逻辑处理和请求流程控制。本文将深入探讨Struts2拦截器的工作原理及其应用。 首先,我们要理解什么...
这个压缩包可能包含了一个模拟Struts2拦截器的示例项目。通过解压并分析源代码,我们可以学习如何创建和配置拦截器。例如,可能有一个名为`MyCustomInterceptor`的类,实现了特定的业务逻辑,然后在`struts.xml`中...
在Struts2中,拦截器扮演着非常重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如验证、日志、事务管理等。本话题主要探讨如何利用拦截器实现在用户成功登录后,将其重定向到登录前访问的页面。 首先,...
2. **拦截器**:Struts2的核心特性之一是拦截器。拦截器在Action调用前后执行,用于添加通用功能,如日志记录、事务管理、性能监控等。它们可以通过配置文件灵活地组合和插入到请求处理流程中。 3. **插件支持**:...
总结来说,模拟Struts2框架的实现主要包括以下几个部分: 1. 创建Action类并定义业务逻辑方法。 2. 配置Action映射,指定Action类、方法和URL路径。 3. 实现和配置拦截器,以增强Action的执行过程。 4. 设计视图层...
在本文中,我们将深入理解Struts2的运行流程,并通过单元测试来验证其完整的工作机制,特别是涉及拦截器、验证框架和Result。 首先,让我们回顾一下Struts2的运行流程。当一个HTTP请求到达服务器时,Struts2框架会...
本文将通过使用Servlet来模拟Struts1的工作流程,深入理解其核心机制。 首先,让我们探讨Struts1的基本架构。Struts1框架的核心组件包括ActionServlet、ActionForm、Action、Tiles以及配置文件(struts-config.xml...
这个"模拟Struts2代码+文档"的压缩包很可能包含了一个简化的Struts2应用实例和相关的技术文档,帮助初学者理解Struts2的工作原理和实践操作。 Struts2的核心特性包括: 1. **Action类**:在Struts2中,Action类是...
在本例中,我们使用Struts2框架搭建一个简单的Demo,模拟用户权限控制的实现流程。首先,我们创建了三个不同身份的用户:commen用户、VIP用户和管理员。然后,我们在struts.xml文件中定义了三个Action,分别对应...
总的来说,模拟Struts2环境是学习和理解MVC框架以及Java Web开发的一个良好途径。通过对配置文件的调整和实际代码的编写,开发者可以深入掌握Struts2的工作原理和最佳实践。同时,熟悉反射机制对于理解框架的内部...
- **Struts2**: 支持为每个Action定义不同的拦截器堆栈(Interceptor Stacks),这意味着可以根据不同的Action来配置不同的拦截器组合,增加了灵活性。 通过上述对比可以看出,Struts2相比Struts1在很多方面进行了...
2. **Interceptor测试**:拦截器是Struts2中强大的功能,可以在请求处理流程中插入自定义逻辑。测试拦截器需要确保它们在正确的时间点被调用,以及它们如何影响Action的执行流程。通过Mockito或EasyMock等工具,可以...
在Struts2中实现AOP主要通过自定义拦截器来完成。首先,我们需要创建一个实现了Interceptor接口的类,然后在这个类中定义before()和after()方法,分别对应拦截器在Action执行前和后的操作。接下来,我们需要在struts...
5. **理解拦截器**:拦截器是Struts2的重要特性,它们在Action执行前后执行。调试时,可以观察拦截器的顺序和逻辑,看是否按预期工作。 6. **查看Action上下文**:Struts2的ActionContext封装了当前请求的所有上...
下面是一个简单的Struts2示例代码分析,演示了如何使用Servlet模拟Struts的基本步骤。 1. **main.jsp**:首页,包含一个链接指向登录页面。 2. **login.jsp**:登录表单页面,用户填写用户名和密码后提交表单。 3. ...
总结来说,通过Java反射和XML解析,我们可以模拟Struts2的工作流程:解析配置文件,根据请求找到相应的Action,动态调用方法,处理结果。尽管这可能与Struts2的实际实现有所不同,但它可以帮助我们理解框架的核心...
3. **拦截器(Interceptor)**:Struts2使用拦截器链来处理请求,拦截器可以实现如日志记录、权限检查等功能。默认的拦截器栈包括了`params`(处理请求参数)、`validation`(表单验证)和`exception`(异常处理)等...
Struts2提供了丰富的特性,包括动作映射、结果类型、拦截器、插件支持以及与Spring等其他框架的集成,使得开发者能够构建出高效、可维护的Web应用。 标题提到的“struts2测试工具”可能是指用于测试Struts2应用程序...
在实际项目中,Struts框架提供了更高级的功能,如ActionForm对象收集表单数据,Action类处理业务逻辑,Tiles组件管理视图布局,以及一系列的拦截器来增强功能和性能。但通过Servlet模拟Struts_MVC,我们可以了解其...