Apache Struts2是一个全新的、非常先进的Web应用程序框架,Struts2不只是原来Struts1框架的一个新版本,它基于备受崇敬的OpenSymphony WebWork框架,是一个全新的框架,Struts2实现MVC设计模式 的第二代Web应用程序架构,它建立在最佳实践以及被证明有效且呗社区广泛接受的设计模式 之上。
使用Struts2框架时,了解Struts2的工作流程很重要,Struts2的请求流程如下:
- 客户端初始化一个指向Servlet容器的请求;
- 根据web.xml配置,请求首先经过ActionContextCleanUp过滤器,该过滤器为可选的,这个过滤器对于Struts2和其他框架的整合很有帮助,主要清理当前线程中的Actioncontext和Dispatcher;
- 请求经过插件过滤器,如SitMesh等过滤器;
- 请求经过核心过滤器FilterDispatcher,执行doFilter方法,在方法中,询问ActionMapper来决定这个请求是否需要调用某个Action;
- 如果ActionMapper决定需要调用某个Action,则ActionMapper会返回一个ActionMapping实例(存储Action的配置信息),并创建ActionProxy对象,将请求交给ActionProxy对象继续处理;
- ActionProxy对象根据ActionMapping和Configuration Manager询问框架的配置文件,找到需要调用的Action类;
- ActionProxy对象创建时,会同时创建一个ActionInvocation实例;
- ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Interceptor)的调用;
- 一旦Action执行完毕,ActionInvocation实例负责根据struts.xml中的配置创建并返回Result,Result通常是一个需要被表示的Jsp等,也可能是另一个Action链;
- 如果要在返回Result之前做些什么,可以实现PreResultListener接口,PreResultListener可以在Interceptor中实现,也可以在Action中实现;
- 根据Result对象信息,生成用户响应信息response,在生成响应过程中,可以使用Struts框架中继承的标签,在此过程中仍会涉及到ActionMapper。
相关推荐
Struts2 源码分析 Struts2 是一个基于MVC 模式的Web 应用程序框架,它的源码分析可以帮助我们更好地理解框架的内部机制和工作流程。下面是Struts2 源码分析的相关知识点: 1. Struts2 架构图 Struts2 的架构图...
以上就是Struts2请求处理的基本流程和源码分析。理解这一流程有助于开发者更好地调试和优化Struts2应用,以及在遇到问题时能快速定位和解决。通过深入源码,开发者可以定制化Struts2的行为,满足特定的应用场景需求...
总的来说,Struts2的源码分析涉及Action的创建与执行、Interceptor的调用链、FilterDispatcher的请求调度以及Result的展示机制。通过对这些关键组件的深入理解和代码研究,开发者可以更好地掌握Struts2框架,提高...
总的来说,Struts2的源码分析可以帮助开发者深入理解其内部机制,包括请求处理流程、拦截器的运作方式以及视图组件的实现。这有助于提高应用的可维护性,优化性能,并使开发者能够更好地定制和扩展框架。对于熟悉...
本文将深入探讨Struts2的源码分析,特别是关于StrutsPrepareAndExecuteFilter的初始化过程,这是Struts2的核心组件之一,负责处理HTTP请求。 首先,我们来看`StrutsPrepareAndExecuteFilter`的初始化。这个过滤器...
对于初学者,这是一条学习和掌握Struts2的宝贵途径,而对于经验丰富的开发者,源码分析能帮助他们更高效地定位和解决问题。因此,"struts2完全学习手册源码"是提升Java Web开发技能的绝佳资源。
3. **Struts2请求流程**: - 客户端发起请求。 - 请求经过ActionContextCleanUp过滤器,清理上下文。 - FilterDispatcher利用ActionMapper确定Action。 - ActionProxy根据ActionMapping和ConfigurationManager...
b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...
在请求流程中,`ActionInvocation`会按照预定义的顺序调用拦截器,然后执行Action本身。Action执行完毕后,`ActionInvocation`会创建并返回一个`Result`。如果需要在返回结果前执行某些操作,可以通过实现`...
接下来,我们详细分析Struts2的工作流程: 1. **请求接收**: 当用户在浏览器中发送HTTP请求到服务器时,Struts2框架首先通过一个前端控制器(Front Controller),即`StrutsPrepareAndExecuteFilter`,拦截这个...
源码分析是深入学习Struts2的关键,它可以帮助我们理解框架内部的工作流程。例如,`ActionInvocation`接口代表了一个动作的执行过程,`InterceptorStack`类负责调用拦截器链,而`Result`接口则定义了结果的处理方式...
分析Struts2的源码可以帮助我们理解其内部工作流程,例如Filter Dispatcher如何分发请求,ActionInvocation如何执行Action,Interceptor链如何工作等。通过源码阅读,可以提高对框架的深度理解和定制能力。 7. **...
源码分析是提升编程技能和解决问题的关键,特别是对于复杂的框架如Struts2,理解其内部工作原理能够帮助我们优化应用性能,修复潜在问题,并进行定制化开发。 首先,Struts2的核心组件包括Action、Result、...
了解这些基本概念后,深入源码分析可以发现以下关键技术点: 1. **Dispatcher Servlet**:Struts2的核心控制器,负责接收HTTP请求,通过ActionMapper找到对应的Action,然后调用ActionInvocation进行拦截器链的执行...
尽管Struts2试图保持与Struts1.x的兼容性,但其实现方式和工作流程已经发生了根本变化。 Struts2的核心设计依赖于WebWork,它的主要工作原理是通过拦截器(Interceptor)机制来处理HTTP请求。当一个请求到达服务器...
通过对`org`目录下源码的分析,我们可以看到Struts 2的内部工作机制,包括Action的执行流程、拦截器链的构建、配置解析的过程等,这有助于我们更好地优化和调试基于Struts 2的应用程序。同时,对于想要为Struts 2...
源码分析: 1. **Action结果类型**:在Struts2中,Action的结果类型决定了如何处理Action的返回值。`struts2-json-plugin`添加了JSON结果类型,当Action返回此类型时,会将结果转换为JSON格式。 2. **JSONResult类...