`

Struts2源码学习1--请求处理(一) (转)

阅读更多

Struts2架构图

   请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。
   ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。

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来解析,

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中实现,不知道其它还有什么方式?

 

转自:http://secyaher.blog.163.com/blog/static/38955772009610113458949/

http://hi.baidu.com/fox6575/blog/item/a392b818976ae6deac6e755e.html

分享到:
评论

相关推荐

    struts-xwork-core源码

    XWork则是Struts2的基础,它处理请求、调度Action、执行业务逻辑,并与用户界面进行交互。 1. **Action和ActionContext**: - Action是Struts2中的业务逻辑组件,负责处理用户请求。每个Action类都对应一个特定的...

    struts2-json-plugin源码

    学习`struts2-json-plugin`的源码可以帮助开发者了解Struts2如何处理JSON数据,如何进行自定义扩展,以及如何优化JSON相关的性能。同时,对于理解MVC框架的工作流程和JSON在网络应用中的应用也有很大帮助。深入研究...

    struts2-core-2.0.11源码

    1. **拦截器(Interceptors)**:Struts2的核心特性之一,拦截器负责在Action调用前后执行额外的逻辑,如日志记录、权限验证等。在`org.apache.struts2.interceptor`包下,你可以找到各种预定义的拦截器类。 2. **...

    struts2-core-2.3.7源码

    Struts2是一个基于MVC(Model-View-...总之,`struts2-core-2.3.7`源码的分析将带你走进Struts2框架的深处,帮助你成为一名更熟练的Java Web开发者,理解Web应用的复杂性,以及如何优雅地处理用户请求和业务逻辑。

    Struts2源代码 包含struts-core和xwork-core源码

    - 拦截器是Struts2的一大特色,它们允许在Action执行前后插入自定义的处理逻辑,例如日志记录、权限检查等。 - `.struts.xml`配置文件在这里起着关键作用,它定义了Action的映射、拦截器栈和其他框架设置。 - ...

    struts框架入门学习---工程源码

    总结来说,这个“Struts框架入门学习---工程源码”提供了实践Struts框架的基础,涵盖了Action、MVC模式、配置文件、拦截器和视图等方面,对于初学者来说是一份宝贵的资料。通过分析和运行这个工程,你可以更好地理解...

    struts-2.3.15.3源码

    总的来说,Struts 2.3.15.3 源码的学习可以帮助开发者深入理解MVC框架的设计与实现,以及如何在实际项目中有效地运用Struts 2。通过阅读源码,你可以探索其内部工作原理,提高问题排查能力,并了解如何优化和定制...

    Struts2完全学习手册-第19-21章 源码

    总的来说,这三章的源码学习是每个想要精通Struts2的开发者不容错过的。它们涵盖了从基础到进阶的关键知识,能够帮助你从理论到实践全面掌握Struts2框架。在阅读源码的过程中,结合手册内容,不断实践和调试,你将能...

    struts-2.1.8-all-src.zip

    通过研究这些源代码,开发者不仅可以深入理解Struts2的工作机制,还能学习到如何设计和实现一个成熟的MVC框架。此外,对于那些想要对框架进行定制或者修复问题的人来说,阅读源码是非常有价值的。在实际项目中,了解...

    Struts学习----Action 的配置和使用(源码学习)

    本文将深入探讨Struts Action的配置和使用,以及如何通过源码学习来提升对Struts的理解。 首先,Action配置主要在Struts配置文件(struts-config.xml)中进行。这个文件定义了应用程序的行为,包括Action的映射、...

    struts2-showcase.rar

    Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...

    struts2深入详解源码1-5章

    本资料包包含的是《Struts2深入详解》一书的源码分析,涵盖了从第一章到第五章的内容,并附带了相关的jar包,方便读者结合理论与实践进行学习。 首先,让我们从第一章开始,Struts2的基础知识。这一章通常会介绍...

    STRUTS 2完全学习手册源码 第1-14章

    本资源提供了STRUTS 2完全学习手册的源码,覆盖了第1至第14章的内容,是深入理解并实践Struts 2框架的重要资料。 1. **第一章:介绍与环境搭建** - Struts 2框架的基本概念和历史背景 - 安装和配置Struts 2框架所...

    Struts2完全学习手册-第15-18章 源码

    本资源包含了Struts2完全学习手册的第15至18章的源码,这四章主要涵盖以下几个核心知识点: 1. **Action与Result** (第15章) - **Action**: Struts2的核心组件,它代表了用户请求处理的业务逻辑。Action类是自定义...

    struts1 文件上传源码----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    通过分析这个源码包,开发者可以学习如何配置Struts 1框架以支持文件上传,了解ActionForm的使用,以及如何处理上传后的文件。此外,还能理解Apache Commons FileUpload库的工作原理,这对任何想要深入理解Struts 1...

    struts2学习 源码

    总的来说,Struts2作为一个成熟的MVC框架,为Java Web开发提供了强大且灵活的工具,而这份"struts2学习 源码"资料则是初学者深入理解和实践Struts2的宝贵资源。通过实际操作和研究这些源代码,不仅可以学习到基本的...

    struts2 源码解读

    总的来说,这篇“Struts2源码解读”的博文应该是对Struts2核心机制进行了详细的解析,包括Action、Interceptor、Result等关键组件的工作原理,以及整个请求处理流程。通过学习这些内容,开发者可以深化对Struts2的...

    struts2完全学习手册源码

    - 一个典型的Struts2请求处理包括:解析请求、查找Action、调用Action、执行拦截器、处理结果等步骤。理解这个生命周期有助于调试和优化应用性能。 8. **插件和扩展性**: - Struts2拥有丰富的插件系统,可以轻松...

    struts2.5.13和struts2.3.34的源码包

    这个版本的源码可以帮助我们了解Struts2如何随着技术的发展而进化,例如如何适配新的JVM特性和API,以及在处理请求、响应、视图渲染等核心流程中的改进策略。 其次,Struts2.3.34是一个较旧但广泛使用的版本,它的...

    struts2-core-2.1.8.1 xwork-core-2.1.6源码

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它在Web应用开发中被广泛使用。XWork是Struts2的核心库,为Struts2提供许多底层功能,如动作调度、类型转换和异常处理等。这次我们探讨...

Global site tag (gtag.js) - Google Analytics