1. Struts2架构图
请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。
ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。
2. Struts2部分类介绍
这部分从Struts2参考文档中翻译就可以了。
ActionMapper
ActionMapper其实是HttpServletRequest和Action调用请求的一个映射,它屏蔽了Action对于Request等java Servlet类的依赖。Struts2中它的默认实现类是DefaultActionMapper,ActionMapper很大的用处可以根据自己的需要来设计url格式,它自己也有Restful的实现,具体可以参考文档的docs\actionmapper.html。
ActionProxy&ActionInvocation
Action的一个代理,由ActionProxyFactory创建,它本身不包括Action实例,默认实现DefaultActionProxy是由ActionInvocation持有Action实例。ActionProxy作用是如何取得Action,无论是本地还是远程。而ActionInvocation的作用是如何执行Action,拦截器的功能就是在ActionInvocation中实现的。
ConfigurationProvider&Configuration
ConfigurationProvider就是Struts2中配置文件的解析器,Struts2中的配置文件主要是尤其实现类XmlConfigurationProvider及其子类StrutsXmlConfigurationProvider来解析。
3. Struts2请求流程
1、客户端发送请求
2、请求先通过ActionContextCleanUp-->FilterDispatcher
3、FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action
4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,这儿已经转到它的Delegate--Dispatcher来执行
5、ActionProxy根据ActionMapping和ConfigurationManager找到需要调用的Action类
6、ActionProxy创建一个ActionInvocation的实例
7、ActionInvocation调用真正的Action,当然这涉及到相关拦截器的调用
8、Action执行完毕,ActionInvocation创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。添加PreResultListener可以在Interceptor中实现。
=======================================================================
附简洁版处理过程:
Struts 2框架的处理过程:
- 客户端初始化一个指向Servlet容器(如Tomcat)的请求。
- 这个请求经过一系列过滤器(如ActionContextCleanUp、SiteMesh等)。
- FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action。
- 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求交给ActionProxy。
- ActionProxy通过Configuration Manager询问Struts配置文件,找到需要调用的Action类。
- ActionProxy创建一个ActionInvocation实例。
- ActionInvocation实例使用命名的模式来调用,回调Action的execute方法。
- 一旦Action执行完毕,ActionInvocation负责根据Struts.xml的配置返回结果。
分享到:
相关推荐
包含了struts2的处理流程以及struts2的配置文件,并附有处理流程显示图,更加清楚直观。
通过学习和实践这个Struts2框架程序示例,开发者可以深入理解Struts2的工作原理,掌握如何创建Action、编写Interceptor、配置Action与Result的映射,以及如何利用Struts2的其他特性来提高开发效率和代码质量。...
1. **Struts2框架概述**:Struts2是基于Model-View-Controller(MVC)设计模式的开源框架,它简化了Java Web应用程序的开发,提供了一种组织应用结构和控制业务逻辑的方式。Struts2继承了Struts1的优点,并吸取了...
Struts2框架是Java Web开发中的一个流行框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化和可扩展的方式来构建应用程序。此压缩包文件包含的是Struts2的源码,特别适合初学者研究和学习...
Struts2框架是一款基于MVC(Model-View-Controller)设计模式的开源Java Web应用程序框架,它极大地简化了Java Servlet API的使用,提高了开发效率。这个压缩包包含了两个不同版本的Struts2框架:struts2.0.11和...
Struts2是一个强大的MVC(Model-View-Controller)框架,它是Apache软件基金会下的一个开源项目,被广泛应用于Java EE应用程序开发中。Struts2框架是Struts1的升级版本,它结合了WebWork框架的优点,提供了更高效、...
Struts2框架的核心设计围绕着请求处理流程构建,其主要目标是简化Web应用的开发过程,提高代码的可维护性和可扩展性。当一个HTTP请求到达时,Struts2通过一系列精心设计的组件和流程,将请求转化为具体的业务逻辑...
Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制可以对用户输入的数据进行...
- **请求处理流程**:当用户请求到达时,Struts2的前端控制器会根据配置将请求交给相应的Action处理。 #### 二、Struts2框架搭建与配置 ##### 2.1 导入Jar包 - **下载Struts2的Jar包**:首先需要下载Struts2的库...
### Struts2框架概述 #### 一、Struts2的历史背景与起源 Struts2作为一款备受关注的企业级Web开发框架,在Java Web开发领域占据着举足轻重的地位。尽管Struts2声称自身是一个全新的框架,但从其发展历程来看,这种...
Struts2框架是一种基于Model-View-Controller (MVC)设计模式的Java Web应用程序开发框架。它由Apache软件基金会维护,旨在简化Web应用的开发流程,提供更好的控制和解耦,以及增强可测试性。在"学生信息查询系统"这...
Struts2框架是一个基于Model-View-Controller(MVC)设计模式的Java Web应用程序框架,由Apache软件基金会维护。这个框架极大地简化了开发过程,提高了可维护性和可扩展性。Struts2通过整合多种优秀框架,如Tiles、...
4. **结果类型**:Struts 2支持多种结果类型,如`dispatcher`、`chain`、`redirect`等,开发者可以根据需求选择合适的结果类型来控制流程。 5. **配置灵活性**:除了XML配置文件外,Struts 2还支持注解、Java配置等...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建高效、可扩展且易于维护的Web应用的工具和组件。这个压缩包包含了Struts2框架的基础jar包,这些库是...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用。这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。...
Struts2是一个强大的Java Web应用程序开发框架,它简化了MVC(Model-View-Controller)设计模式的实现,提供了一种组织代码结构、处理HTTP请求和响应、以及管理业务逻辑的方法。下面将详细介绍Struts2框架的搭建过程...
【基于Struts2框架的名片管理系统】是一种使用JavaEE技术栈构建的企业级应用程序,它旨在高效管理和存储名片信息。Struts2是ActionServlet的一种增强版本,是Java Web开发中的一个流行MVC(Model-View-Controller)...
Struts2框架是一个基于Model-View-Controller(MVC)设计模式的开源Java Web应用程序框架。它简化了Java Servlet API的使用,提供了处理HTTP请求、转发控制和视图渲染的能力。在这个简单的用户登录实例中,我们主要...
Struts2框架是Java开发Web应用的一个强大框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化且灵活的方式来构建应用程序。Struts2的出现是为了改进原有的Struts1框架,增加了更多的功能和...