Structs2的interceptor模拟实现
1、自定义interceptor接口
public interface MyInterceptor { public void interceptor(Invocation invocation); }
2、拦截器1
public class FirstInterceptor implements MyInterceptor { @Override public void interceptor(Invocation invocation) { System.out.println("第一次拦截开始---------"); invocation.invoke(); System.out.println("第一次拦截结束---------"); } }
3、拦截器2
public class SecondInterceptor implements MyInterceptor { @Override public void interceptor(Invocation invocation) { System.out.println("第二次拦截开始---------"); invocation.invoke(); System.out.println("第二次拦截结束---------"); } }
4、Invocation的实现
import java.util.ArrayList; import java.util.List; public class Invocation { List<MyInterceptor> interceptors = new ArrayList<MyInterceptor>(); int index = -1; public Invocation() { this.interceptors.add(new FirstInterceptor()); this.interceptors.add(new SecondInterceptor()); } public void invoke() { index++; if (index < interceptors.size()) { interceptors.get(index).interceptor(this); } else { // 拦截器拦截完毕后执行Action new Action().execute(); } } }
5、模拟Action类
public class Action { public void execute() { System.out.println("Action 执行**********************"); } }
6、客户端Client调用
public class Client { public static void main(String[] args) { new Invocation().invoke(); } }
总结:
Structs2拦截器的实现方式类似于设计模式中的责任链模式,为了能更容易理解拦截器的原理http://787141854-qq-com.iteye.com/admin/blogs/2070819,建议先去学习一下责任链模式。
相关推荐
3. **拦截器(Interceptor)**:拦截器是Struts2的一个重要特性,它可以插入到Action调用的前后,执行一些预处理或后处理任务,如日志记录、权限检查等。Struts2提供了一系列内置的拦截器,同时允许自定义拦截器以...
实际的Struts框架在DispatcherAction的实现上还考虑了拦截器(Interceptor)、多视图(多个Forward)支持、国际化(Internationalization)等问题,模拟实现时也可以考虑这些增强功能。 通过以上步骤,你可以理解...
在本主题"Servlet简单模拟Struts2"中,我们将探讨如何利用Servlet来实现类似Struts2框架的一些关键功能,包括请求拦截、XML配置解析、动态代理以及日志拦截。 首先,让我们了解一下Struts2框架的核心特性。Struts2...
在这个“struts2实现留言板”的项目中,我们将深入探讨如何利用Struts2框架来创建一个功能完备的留言板系统,包括添加、回复和删除留言等基本操作。 首先,我们要了解Struts2的核心组件和工作原理。Struts2框架通过...
这篇博客文章将探讨如何模拟Struts2的AOP实现。 AOP的核心概念是切面(Aspect)、连接点(Join Point)、通知(Advice)和切入点(Pointcut)。在Struts2中,这些概念通过拦截器(Interceptor)来实现。拦截器是...
在Struts2中,我们可以通过实现`com.opensymphony.xwork2.interceptor.Interceptor`接口或者继承`InterceptorSupport`类来创建自定义拦截器。拦截器需要重写`intercept()`方法,这是执行拦截逻辑的地方。 2. **...
- **Struts2**: 支持为每个Action定义不同的拦截器堆栈(Interceptor Stacks),这意味着可以根据不同的Action来配置不同的拦截器组合,增加了灵活性。 通过上述对比可以看出,Struts2相比Struts1在很多方面进行了...
本项目旨在通过Java代码模拟实现Struts2框架的基本功能,帮助我们理解其工作原理。 首先,Struts2的核心是Action类,它是处理用户请求的中心。在模拟实现中,我们需要创建一个或多个Action类,这些类通常会继承自...
7. **Interceptor(拦截器)**: 拦截器是Struts2的一大特色,它可以插入到Action调用链中,执行预处理或后处理操作,如权限检查、日志记录等。 8. ** strut2-convention-plugin**: Struts2提供了一种约定优于配置的...
Struts2 使用拦截器(Interceptor)机制来扩展功能,如验证、日志、事务管理等。在本项目中,可能会包含多个Action类,每个类对应特定的银行服务,如账户查询、转账、存款等。 接下来,我们来看Hibernate。...
拦截器是Struts2框架中的核心组件之一,它在MVC(Model-View-Controller)架构中扮演着重要角色,实现了灵活的业务逻辑处理和请求流程控制。本文将深入探讨Struts2拦截器的工作原理及其应用。 首先,我们要理解什么...
3. **拦截器(Interceptor)**:Struts2使用拦截器链来处理请求,拦截器可以实现如日志记录、权限检查等功能。默认的拦截器栈包括了`params`(处理请求参数)、`validation`(表单验证)和`exception`(异常处理)等...
`struts2-mailreader-2.0.1.war` 是一个模拟邮件阅读器的实例,展示了Struts2处理表单数据、文件上传、用户认证和授权的使用。它可以帮助开发者理解如何在Struts2中实现用户交互和数据管理。 3. **Struts2 Portlet...
2. **Interceptor测试**:拦截器是Struts2中强大的功能,可以在请求处理流程中插入自定义逻辑。测试拦截器需要确保它们在正确的时间点被调用,以及它们如何影响Action的执行流程。通过Mockito或EasyMock等工具,可以...
2. **Mockito**:它允许模拟对象,使你可以在不依赖实际环境的情况下测试Struts2的动作类和其他依赖组件。 3. **Struts2 TestNG Plugin**:这是一个用于Struts2的TestNG集成,提供了一种方便的方式在TestNG框架下...
8. **拦截器(Interceptor)**:Struts 2引入了拦截器机制,这是一种AOP(面向切面编程)的概念,可以用来实现日志、权限检查、事务管理等功能,提高了代码的可复用性和可维护性。 9. **Struts与Spring的整合**:在...
在这个“利用struts2实现的网上购物模拟系统”中,我们可以深入探讨以下几个核心知识点: 1. **Struts2框架**:Struts2作为MVC框架,提供了一种组织应用程序逻辑的方式。它处理HTTP请求,通过Action类将这些请求...
3. **拦截器(Interceptor)**:Struts2的核心机制之一是拦截器,它们按照预定义的顺序在Action调用前后执行。常见的拦截器有结果映射、参数校验、异常处理等,可以实现通用的功能,降低代码重复。 4. **Action上...
- **Struts2**: 通过配置拦截器堆栈(Interceptor Stacks)来为每个Action定制不同的执行流程。这种机制使得开发者可以根据具体需求灵活地组合和调整拦截器,实现了更细粒度的控制。 综上所述,Struts2相比Struts1...