下图描述了Struts 2 的整体结构
1、 在上图中客户端初始化一个指向Servlet容器(例如 Jetty 或者Resin)的请求
2 、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5、 ActionProxy通过Configuration Manager询问框架的配置文件(从struts.xml文件开始),找到需要调用的Action类
6 、ActionProxy创建一个ActionInvocation的实例,ActionInvocation实例使用命名模式来调用
7、在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper
注: 在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。ObjectFactory是非常灵活的,当需要知道对象在框架中被创建时,我们可以在任何情况下提供我们自己的ObjectFactory。一种比较流行的实现ObjectFactory的方法是用Spring提供的ObjectFactory。
9 、调用视图之后,会再次以相反的顺序经过拦截器
10 、最后响应经过web.xml配置文件的过滤器,如果ActionContextCleanUp 存在,FilterDispatcher 将不会清除本地线程中的ActionContext,否则,将会清除所有本地线程。
参考:http://struts.apache.org/release/2.3.x/docs/big-picture.html
当然也有参考网上别人翻译的^ ^!
相关推荐
Struts2-dojo-plugin-2.2.1.jar 是一个针对Apache Struts2框架的扩展插件,主要用于增强Struts2应用的用户界面交互性,特别是通过集成Dojo JavaScript库来提供丰富的AJAX功能和用户体验。这个插件是Struts2与Dojo ...
`struts2-json-plugin-2.1.8.1.jar` 则是Struts 2框架的一个插件,主要用于增强Struts 2对JSON的支持。Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许...
在研究源码时,理解以上这些核心概念和组件的工作原理,可以帮助你深入掌握Struts2框架,从而更好地进行开发和优化。同时,由于源码可能存在错误,学习过程中需要具备一定的问题排查能力,利用IDE的调试工具逐步跟踪...
Struts2-core-2.0.12.jar是Apache Struts...尽管这是一个较旧的版本,但它仍然是理解Struts2工作原理和MVC设计模式的重要参考。在实际开发中,为了获得最新的安全更新和功能增强,建议使用最新稳定版的Struts2框架。
Struts2是一个非常流行的Java Web...同时,对于理解MVC框架的工作流程和JSON在网络应用中的应用也有很大帮助。深入研究源码可以提高开发效率,解决实际开发中遇到的问题,如处理复杂对象的序列化、优化JSON响应速度等。
2. **Interceptor**:拦截器是Struts2的一个重要特性,它们是插件式的,可以插入到Action调用流程中,实现如日志、权限检查、事务管理等通用功能。 3. **Result**:结果是Action执行后返回的对象,通常用于渲染视图...
它扩展了JUnit,使得Struts2的控制器可以在单元测试环境中运行,从而能够更好地测试Action和整个MVC流程。这个插件在2.1.8版本中也包含了对Struts2核心库的依赖,确保了测试的兼容性。 最后,`json-lib-2.1.jar`是...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web框架,由Apache软件基金会维护。在深入理解`struts2-core-2.3.7`源码之前,我们先概述一下Struts2的基本概念和核心组件。 1. **Action**: Struts2...
Struts2是一个强大的Java web框架,它极大地简化了MVC(模型-视图-控制器)应用的开发。在Struts2框架中,标签库是其重要组成部分,它提供了丰富的标签来帮助开发者更方便地构建用户界面。`struts2-tags-API`就是...
通过学习和实践这些内容,开发者可以深入理解Struts2框架的工作原理,掌握其配置和使用方法,从而在实际项目中更好地应用Struts2,提升开发质量和效率。同时,了解如何在Eclipse中进行Struts2项目的配置和调试,也是...
Struts2框架的优势在于其强大的拦截器(Interceptor)机制,允许开发者定义自定义的行为,如日志记录、权限检查等,可以在请求处理流程中的不同阶段插入。此外,它还支持多种结果类型,如Redirect、Stream等,方便...
Struts2是一个非常著名的Java Web开发框架,它基于MVC(Model-View-Controller)设计模式,极大地简化了企业级应用的开发流程。Struts2的核心是Action类,它负责处理用户请求,与业务逻辑交互,并将结果传递给视图...
Struts2是一个强大的MVC(模型-视图-控制器)框架,它极大地简化了Java Web应用的开发。在Struts2框架中,标签库是其重要组成部分,它提供了丰富的标签来帮助开发者构建用户界面,使得代码更加简洁、易读且易于维护...
总之,`struts2-spring-2.5.14.1.jar` 是一个用于集成Struts2和Spring的工具包,它简化了两个框架的配合工作,提高了开发效率,同时也提供了学习和开发所需的资源。对于希望深入理解和使用这两个框架的人来说,这个...
通过这个简单的示例,我们了解了Struts2的基本工作流程和配置需求。实际开发中,Struts2还可以结合各种插件和第三方库,实现更复杂的功能,如表单验证、国际化、JSON支持等。熟悉并掌握Struts2框架,对于Java web...
Struts2 Dojo Plugin是Apache Struts框架的一个扩展,它为开发者提供了丰富的AJAX功能,以便在基于Struts2的应用程序中实现动态、交互式的用户界面。这个版本号"2.3.15.3"表明这是一个较旧的版本,但仍然在许多现有...
Struts2是一个非常著名的Java Web框架,用于构建企业级...总的来说,Struts2与JSON的结合简化了Web应用的开发流程,提高了数据交换的效率。但是,同时也需要关注其安全性,确保在享受便利的同时,不会引入潜在的风险。
在Web开发中,Struts2提供了一种组织应用程序结构和控制流程的方法,使得开发者能够更有效地构建动态、数据驱动的Web应用。这个名为"struts2-1_struts2-1_threepze_"的项目很可能是某个开发者或教学资源创建的,用于...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web框架,它极大地简化了构建可维护、可扩展且高度结构化的web应用程序的流程。2.3版本是Struts2的一个重要里程碑,提供了许多特性以增强性能和开发者...
2. **标签库**:包括`struts-bean.jar`、`struts-html.jar`、`struts-logic.jar`和`struts-nested.jar`等,提供了一系列预定义的JSP标签,如logic标签用于流程控制,bean标签用于展示数据,html标签则用于表单元素的...