此文件copy自struts2 reference.个人认为这个图对理解struts2非常有帮助,所以就拿来放到自己的博客上了。
In the diagram, an initial request goes to the Servlet container (such as Jetty or Resin) which is passed through a standard filter chain. The chain includes the (optional)ActionContextCleanUp
filter, which is useful when integrating technologies such as
SiteMesh Plugin
. Next, the required
FilterDispatcher
is called, which in turn consults theActionMapper
to determine if the request should invoke an action.
If the ActionMapper determines that an Action should be invoked, the FilterDispatcher delegates control to the
ActionProxy
. The ActionProxy consults the frameworkConfiguration Files
manager (initialized from the
struts.xml
file). Next, the ActionProxy creates an
ActionInvocation
, which is responsible for the command pattern implementation. This includes invoking any
Interceptors
(the
before
clause) in advance of invoking the
Action
itself.
Once the Action returns, the ActionInvocation is responsible for looking up the proper
result
associated with the
Action result code
mapped in
struts.xml
. The result is then executed, which often (but not always, as is the case for
Action Chaining
) involves a template written in
JSP
or
FreeMarker
to be rendered. While rendering, the templates can use the
Struts Tags
provided by the framework. Some of those components will work with the ActionMapper to render proper URLs for additional requests.
|
All objects in this architecture (Actions,
Results
,
Interceptors
, and so forth) are created by an
ObjectFactory
. This ObjectFactory is pluggable. We can provide our own ObjectFactory for any reason that requires knowing when objects in the framework are created. A popular ObjectFactory implementation uses Spring as provided by the
Spring Plugin
. |
Interceptors are executed again (in reverse order, calling the
after
clause). Finally, the response returns through the filters configured in the
web.xml
. If the ActionContextCleanUp filter is present, the FilterDispatcher will
not
clean up the ThreadLocal
ActionContext
. If the ActionContextCleanUp filter is not present, the FilterDispatcher will cleanup all ThreadLocals.
注意:与struts1不同,struts2对用户的每一次请求都会创建一个action,所以struts2的action是线程安全的。
struts1中的action是singleton(单例)的,struts2中的action是prototype(原型)的。
- 大小: 64.7 KB
分享到:
相关推荐
struts2架构图
S2SH框架图,理解S2SH结构很有帮助。
struts核心架构分析图struts核心架构分析图struts核心架构分析图struts核心架构分析图
Struts2 的架构图主要包括 Filter chain、ActionMapper、ActionProxy、ActionInvocation 和 Result 等组件。Filter chain 负责处理请求,Filter 主要包括 ActionContextCleanUp,它主要清理当前线程的 ActionContext...
都市供求信息网是一个基于Struts2架构开发的网站示例,它主要用于展示如何在实际项目中运用Struts2框架来构建动态、数据驱动的Web应用。Struts2是一个强大且灵活的MVC(Model-View-Controller)框架,它简化了Java ...
Struts2的架构和运行流程 之 3.1 Struts2的系统架构
Struts2技术架构图
Struts2-架构图.PNG
Struts2 架构图展示了 Struts2 框架的整体结构,包括 FilterDispatcher、ActionProxy、Action 等组件。Struts2 的主要功能是提供了一个灵活的框架来开发 Web 应用程序。 知识点: * Struts2 框架的架构组件:...
1. **Struts2架构图**: 当一个HTTP请求到达服务器时,它首先通过一系列Filter(过滤器),包括ActionContextCleanUp,该过滤器负责清理当前线程的ActionContext。接着,FilterDispatcher接管,它依赖ActionMapper...
struts2_1架构图
1. **Struts2架构图** 请求在Struts2框架中的处理流程始于Filter链,其中Filter主要包括`ActionContextCleanUp`和`FilterDispatcher`。`ActionContextCleanUp`的作用是清理当前线程的`ActionContext`,确保每个请求...
Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-Controller)架构的应用程序。在Web开发中,图片上传和预览是常见的功能需求,尤其对于用户交互丰富的应用来说。Struts2...
Struts2是一个流行的Java Web框架,它为开发者提供了一种模型-视图-控制器(MVC)架构,便于构建动态Web应用。在本场景中,我们关注的是如何使用Struts2来实现图片上传并显示的功能,同时生成缩略图。 首先,我们...
根据提供的文件信息,“Struts框架原理图”主要阐述了Struts框架的工作原理、流程以及页面间的跳转机制。为了更好地理解和应用Struts框架,本文将深入解析这些关键知识点。 ### Struts框架概述 Struts是一个开源的...
在`struts2原理图.png`中,可能会详细展示这一系列步骤,包括请求的接收、拦截器链的执行、Action的调用以及最终视图的渲染。这张图是理解Struts2工作流程的重要辅助工具,通过它你可以直观地看到每个组件如何协同...
根据给定的信息,本文将对Java相关的架构图进行详细的解读与分析,主要涵盖Spring、Hibernate、Struts(包括Struts1和Struts2)、JSF、Seam、Grails、DWR、J2EE、Oracle等技术栈的核心概念及其架构特点。 ### 1. ...
各种系统架构图及其简介(Spring+IBatis+Struts1+Struts2+Hibernat)
Struts2的核心目标是提供一个清晰的、高效的架构,帮助开发者构建可维护性高、扩展性强的Web应用。 在Struts2的体系结构中,主要有以下几个关键组件: 1. **Filter Dispatcher**:这是Struts2的核心组件,作为...
Struts2是一个强大的Java EE应用程序框架,用于构建MVC(模型-视图-控制器)架构的Web应用。在本教程中,我们将深入探讨如何利用Struts2实现单个图片的上传功能,无需JavaScript的额外开发。 首先,我们需要理解...