这两天没什么任务,就想研究一下struts2的源码,看了半天,有些地方不是太明白,百度一下,发现网上已经有很多兄弟整理出来的资料,有得写的已经很全面了,结合着再去看源码,事半功倍,这里分享一下。
=============struts2体系结构图=================
流程:
一个请求在Struts2框架中的处理大概分为以下几个步骤:
1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求;
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper
在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。
来自网上,在此谢过。
另外有得同志总结的很好,特别感谢分享,地址:
http://wenku.baidu.com/view/ad421874a417866fb84a8e75.html
我也收藏了一份在附件中。
- 大小: 395.5 KB
分享到:
相关推荐
综上所述,Struts1的工作流程主要包括用户请求的接收、请求的解析、ActionForm的创建与验证、Action的执行以及结果的呈现。这一流程清晰地展示了Struts1如何实现MVC设计模式,帮助开发者更好地组织代码结构,提高...
### Struts2工作流程详解 #### 一、Struts2框架概述 Struts2作为一款流行的Java Web开发框架,其核心目标就是简化Web应用的开发流程。它通过一系列的组件和设计模式,使得开发者能够更加高效地构建出稳定且可维护...
本文将深入解析Struts2的工作流程,帮助开发者理解其核心机制。 ### 一、Struts2整体架构 Struts2框架的核心设计围绕着请求处理流程构建,其主要目标是简化Web应用的开发过程,提高代码的可维护性和可扩展性。当一...
4. **第四章:struts2中的OGNL**:OGNL(Object-Graph Navigation Language)是Struts2中的表达式语言,用于在视图和模型之间传递数据。本章将解释OGNL的基本语法,以及如何在Action和JSP中使用OGNL表达式。 5. **...
在"struts2完全学习手册源码"中,我们可以深入理解Struts2的核心概念和工作原理。第一章的源码提供了关于Struts2配置文件和基本原理的实践示例。以下是对这些知识点的详细阐述: 1. **配置文件**: - **struts.xml...
Struts2作为Struts框架的第二代产品,提供了一个灵活的架构来支持MVC设计模式,帮助开发者更高效地构建复杂的Web应用。然而,任何软件系统都无法完全避免安全隐患,Struts2也不例外。 在2017年,Struts2被曝出多个...
#### 第四步:配置struts.xml 创建`struts.xml`文件,该文件用于定义应用程序的行为,包括Action的配置和结果集的设置。 #### 第五步:编写HelloAction 创建一个简单的`HelloAction`类,类似于之前的Servlet,...
6. **运行流程**:当一个请求到达服务器,Struts2框架会解析`struts.xml`中的配置,找到对应的Action并执行。Action执行完毕后,根据返回的结果名找到相应的Result进行页面跳转。在整个过程中,拦截器链会被触发,...
- **理解Struts2的工作流程**:从请求到达过滤器,到Action执行,再到视图展示。 2. **Struts2核心概念及原理**: - **拦截器(Interceptors)**:Struts2的核心组件之一,负责在Action执行前后进行额外的操作,...
为了更好地理解Struts2的工作原理,下面我们来详细介绍一下Struts2中的几个关键接口和类: 1. **ActionMapper**:该接口用于根据请求的URL查找是否存在对应Action调用。它是请求处理流程的第一步,决定了后续流程的...
2. **工作流引擎**:内置的工作流引擎可以实现审批流程,提高协作效率。 3. **内容管理**:提供文档库、博客、论坛等模块,便于内容创作和分享。 4. **portlet容器**:支持多种portlet标准,如JSR-286,使得第三方...
- **StrutsPrepareAndExecuteFilter**:处理请求的第一道防线,主要负责初始化Struts2环境并解析用户的请求。 - **ActionMapping**:根据请求URL确定具体的Action。 - **ActionProxy**:作为Action的代理,负责...
4. **配置Struts2**:在struts.xml配置文件中,为Action类的这两个方法分别配置一个结果,指定它们返回的视图(JSP页面或Freemarker模板)。同时,确保Action类已经正确地映射到URL路径。 5. **JSP页面**:创建JSP...
理解不同的结果类型,如“dispatcher”(用于转发到JSP)和“stream”(用于下载文件),是掌握Struts2工作流程的关键。 4. **拦截器**:Struts2的拦截器机制允许在Action调用前后插入自定义逻辑,如日志、权限检查...
这个"struts2-jsondemo"项目涵盖了从服务器端到客户端的整个JSON数据交互流程,对于学习和理解Struts2框架如何与JSON配合工作是非常有价值的。通过实践这个示例,开发者可以深入了解Struts2的JSON支持,并能熟练地在...
这个过滤器实现了`Filter`接口,是Struts2拦截请求并进行处理的第一步。`init`方法是初始化的入口点,其中涉及多个关键步骤: 1. 初始化`InitOperations`类,这是一个代理类,用于执行各种初始化操作。 2. `...
### STRUTS 2技术内幕:深入解析STRUTS架构设计与实现原理 #### STRUTS 2架构设计概述 Struts 2是Struts框架的第二个版本,它继承了Struts 1.x的优点,并在此基础上引入了许多新的特性和改进。Struts 2的核心优势...
总的来说,"浪曦struts2源码第四课"的学习涵盖了Struts2的基础架构、核心组件的工作流程,以及如何通过源码加深对框架的理解。通过对源码的阅读和分析,开发者不仅可以提升自己的编程技能,还能在面对实际项目时,更...