Struts2 中的拦截器和 servelt 中的过滤器是非常的相似的。如果学过过滤器的话,肯定能够感觉的到,尽管有些微的不同。可是struts2的拦截器到底如何使用呢,为什么会有这些配置呢? 接下来一一来看。
过滤器和拦截器是非常相似的,过滤器 public interface Filter 接口里面有三个方法:
- init(FilterConfig filterConfig),
- destroy(),
- doFilter(ServletRequest request, ServletResponse response, FilterChain chain),
这里面的 doFilter() 方法是最重要的,在 struts2 中 String intercept(ActionInvocation invocation)就相当于此方法。
如何完成一个拦截器呢?在 struts2 中要实现一个接口 这个接口是什么呢?在哪呢?,是否在哪听说过?是 webwork 是我们以前听的最多的关于拦截器的框架, struts2 用了其中一个核心的东西,这个东西在是什么呢?是 xwork 。恩,有了它才可以拦截,好了我们在哪找呢?在 com.opensymphony.xwork2.interceptor 中找,里面有个 Interceptor 这是个接口,里面也有三个方法,有 init, destroy 和 intercept 三个方法,而在 struts2 里面的所有的拦截器都继承这个接口!
struts2接受客户端请求时,在执行action之前已经执行了自身默认的拦截器,这些拦截器完成struts2的大部分初始化的功能,比如设置属性值等。
执行完这些拦截器后,再执行action,返回客户端时,还得经过拦截器的拦截,最终返回客户端。下面我们开始模拟拦截器的实现过程:
1、新建自己的拦截器:
2、拦截器的具体实现
3、需要执行的action
4、控制器,该控制器调配执行拦截器和action
5、main方法执行,在struts2框架中,前台的一个请求被过滤器拦截后就执行拦截,然后再执行action
模拟结果:
第一个拦截器开始。。。。
第二个拦截器开始.....
执行execute方法
第二个拦截器结束......
第一个拦截器结束.......
从模拟结果分析,拦截器相当于包裹在action外面的屏障,要达到执行action的目的,需要穿过屏障-------->执行action-------->穿出屏障
拦截器的实现其实是aop编程思想,在实现相应逻辑的前后,加上其他逻辑的实现,而且没有任何依赖关系。
分享到:
相关推荐
拦截器是Struts2框架中的核心组件之一,它在MVC(Model-View-Controller)架构中扮演着重要角色,实现了灵活的业务逻辑处理和请求流程控制。本文将深入探讨Struts2拦截器的工作原理及其应用。 首先,我们要理解什么...
本文将深入探讨如何模拟Struts2的拦截器,并通过一个实际的Filter类来阐述其工作原理。 首先,我们需要理解Struts2拦截器的基本概念。拦截器是一个实现了`Interceptor`接口的Java类,它位于动作调用之前和之后,...
首先,我们需要理解Struts2拦截器的工作原理。拦截器是基于Java的动态代理机制实现的,它们在Action调用之前和之后执行,形成一个拦截器链。开发者可以通过配置struts.xml或struts.properties文件来定义拦截器链和其...
首先,理解Struts2的拦截器工作原理。拦截器是基于Java的动态代理机制实现的,它们按照配置的顺序形成一个拦截器链,每个请求在执行动作之前会依次经过这些拦截器。在处理登录场景时,我们可以创建一个特定的拦截器...
这个压缩包可能包含了一个模拟Struts2拦截器的示例项目。通过解压并分析源代码,我们可以学习如何创建和配置拦截器。例如,可能有一个名为`MyCustomInterceptor`的类,实现了特定的业务逻辑,然后在`struts.xml`中...
实际的Struts框架在DispatcherAction的实现上还考虑了拦截器(Interceptor)、多视图(多个Forward)支持、国际化(Internationalization)等问题,模拟实现时也可以考虑这些增强功能。 通过以上步骤,你可以理解...
在`myStruts`这个压缩包中,可能包含模拟Struts1流程所需的代码和配置文件,如ActionServlet的实现、Action类、ActionForm类、struts-config.xml以及展示结果的JSP页面。通过对这些文件的分析和实践,你可以更深入地...
在本主题"Servlet简单模拟Struts2"中,我们将探讨如何利用Servlet来实现类似Struts2框架的一些关键功能,包括请求拦截、XML配置解析、动态代理以及日志拦截。 首先,让我们了解一下Struts2框架的核心特性。Struts2...
通过实践简单的Struts2模拟代码,可以更好地理解和体验Struts2框架的工作原理和优势。在实际开发中,还需要不断学习和熟悉Struts2的高级特性,如自定义拦截器、类型转换、插件使用等,以提升开发能力。
以下将详细阐述实现自定义拦截器的步骤和原理。 一、准备工作 在开始之前,确保已正确配置了Struts2.3.6的核心库以及相关的依赖,例如Log4j的日志处理库。这些库文件可以通过Maven或直接下载JAR包来获取。在项目中...
3. **拦截器(Interceptor)**:拦截器是Struts2的一个重要特性,它可以插入到Action调用的前后,执行一些预处理或后处理任务,如日志记录、权限检查等。Struts2提供了一系列内置的拦截器,同时允许自定义拦截器以...
总结来说,模拟Struts2框架的实现主要包括以下几个部分: 1. 创建Action类并定义业务逻辑方法。 2. 配置Action映射,指定Action类、方法和URL路径。 3. 实现和配置拦截器,以增强Action的执行过程。 4. 设计视图层...
总之,Struts2是一个强大且灵活的MVC框架,它的工作原理涵盖了前端控制器、拦截器、Action、结果映射等多个关键组件,提供了高效、模块化的web应用开发解决方案。通过实际项目的学习,开发者可以更好地掌握其精髓,...
Struts2的拦截器机制允许我们在执行Action之前或之后插入额外的处理逻辑,如登录验证。我们可以自定义拦截器来实现复杂的功能,例如,确保用户已登录才能访问某些页面。 7. **持久化数据** 注册功能涉及到用户...
在这个“struts2实现留言板”的项目中,我们将深入探讨如何利用Struts2框架来创建一个功能完备的留言板系统,包括添加、回复和删除留言等基本操作。 首先,我们要了解Struts2的核心组件和工作原理。Struts2框架通过...
这个"模拟Struts2代码+文档"的压缩包很可能包含了一个简化的Struts2应用实例和相关的技术文档,帮助初学者理解Struts2的工作原理和实践操作。 Struts2的核心特性包括: 1. **Action类**:在Struts2中,Action类是...
总的来说,模拟Struts2环境是学习和理解MVC框架以及Java Web开发的一个良好途径。通过对配置文件的调整和实际代码的编写,开发者可以深入掌握Struts2的工作原理和最佳实践。同时,熟悉反射机制对于理解框架的内部...
3. **拦截器(Interceptors)**:Struts2的拦截器机制使得在Action执行前后可以添加自定义的处理逻辑,如日志记录、权限验证等。 4. **模型驱动(ModelDriven)**:一种设计模式,允许Action类通过持有模型对象来...
2. **松耦合**:通过将业务逻辑控制器与Servlet API解耦,Struts2实现了更高级别的松耦合,提高了代码的可维护性和可重用性。 3. **面向接口编程**:Struts2通过定义一系列的接口来规范开发流程,这样做的好处是可以...
4. **拦截器**:拦截器是Struts2中的一大特色,它允许在Action执行前后插入额外的功能。仿写时,可以实现自定义拦截器,如权限验证、日志记录等,通过配置文件将它们插入到执行链中。 5. **结果类型**:Struts2支持...