`
endual
  • 浏览: 3557706 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2源码阅读1

 
阅读更多

Struts2源码阅读(一)_Struts2框架流程概述

分类: Struts 196人阅读 评论 (0) 收藏 举报

1. Struts2架构图

 

请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和 Dispatcher;FilterDispatcher通过AcionMapper把请求路径与配置文件的namespace匹配,封装成actionMapping。
        ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建 ActionProxy,ActionProxy创建ActionInvocation,由ActionInvocation实际创建Interceptors和Action,然后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把请求路径与配置文件的namespace匹配,封装成actionMapping
4、如果ActionMapper返回的actionMapping不为空,则转到FilterDispatcher的Delegate-- Dispatcher,由它创建ActionProxy及ActionInvocation并初始化,ActionInvocation初始化过程中根据 ActionMapping和ConfigurationManager创建真正的Action类
5、Dispatcher调用ActionProxy的execute方法
6、ActionProxy调用ActionInvocation的invoke方法
7、ActionInvocation调用真正的Action,当然这涉及到相关拦截器的调用
8、Action执行完毕,ActionInvocation创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。添加PreResultListener可以在Interceptor中实现。

 

http://qidaoxp.javaeye.com/blog/492295

分享到:
评论

相关推荐

    struts2源代码 struts2源代码

    struts2源代码 正宗的 源码struts2源代码 正宗的 源码struts2源代码 正宗的 源码struts2源代码 正宗的 源码

    Struts2源码阅读

    通过阅读Struts2的源码,我们可以深入了解框架如何处理请求、如何调度Action以及如何应用拦截器来扩展功能。这有助于开发者更好地定制和优化他们的应用程序,提高代码质量和性能。在实际开发中,对源码的理解能帮助...

    struts2.3.4源代码

    尽管描述中提到不包含XWork源代码,但XWork是Struts2的基础,它处理Action的执行和异常管理。 在Struts2.3.4源代码中,我们可以深入理解以下关键知识点: 1. **FilterDispatcher**: 这是Struts2框架的入口点,负责...

    struts2源代码分析

    在分析Struts2的源代码之前,你需要首先获取Struts2的源代码,可以通过访问http://www.opensymphony.com/xwork/download.action下载XWork的源码,因为它构成了Struts2的核心。下载的源代码压缩包名为struts-2.1.0-...

    struts1源代码

    在Struts1的源代码中,`org`目录通常是框架的核心组件包,包含了许多关键类和接口。以下是一些重要的知识点: 1. **ActionServlet**:这是Struts1的主控制器,是Servlet的子类,负责处理HTTP请求并调用相应的Action...

    Struts2源代码项目

    通过对这些源代码的阅读和分析,你可以了解Struts2如何处理HTTP请求,如何调度Action,以及它如何与Spring、Hibernate等其他框架集成。 `.settings`目录包含了Eclipse项目的特定配置,比如代码格式化规则、编译器...

    struts2 项目源代码

    这个"北大青鸟 struts2 项目源代码"是学习和理解Struts2框架的一个实用资源,尤其适合初学者和开发者深入研究。 在Struts2框架中,核心组件包括Action、Result、Interceptor(拦截器)、配置文件等。Action是业务...

    Struts2框架源码

    在MyEclipse9中,你可以导入这些源码,通过调试和阅读代码,理解Struts2的工作原理。对于初学者来说,这是一条深入理解MVC框架的好途径。你可以逐步分析Action类如何被调用,拦截器如何影响Action的执行流程,以及...

    struts1.3.10源代码

    在Struts 1.3.10的源代码中,我们可以关注以下几个核心组件和知识点: 1. **ActionServlet**:这是Struts的核心控制器,负责处理来自客户端的HTTP请求。它实现了Servlet接口,并在web.xml中被配置为过滤所有与...

    struts2 源码分析

    从 org.apache.struts2.dispatcher.FilterDispatcher 开始 Java 代码阅读,我们可以看到 FilterDispatcher 的 init 方法,它负责初始化 Dispatcher 对象,并创建了一个 ActionMapper 实例,以便对请求进行处理。...

    JAVAEE源代码以及struts2源代码

    JavaEE源代码与Struts2源代码是JavaWeb开发中的重要组成部分,对于深入理解Web应用程序的构建和运行机制至关重要。JavaEE(Java Platform, Enterprise Edition)是Java平台的一个版本,专为开发和部署企业级应用而...

    struts2教程源代码

    在"struts2教程源代码"中,你可以找到一系列用于学习和实践Struts2框架的实例。这些源代码是针对初学者设计的,旨在帮助理解如何在实际应用中运用Struts2的核心概念和特性。"strut2课程源代码第一天及说明"可能包含...

    struts2源码分析

    struts2源码详细解析51CTO下载-struts2源代码分析(个人觉得非常经典)

    Struts2源码分析

    Struts2是一个流行的Java web应用程序框架,它源自Struts1.x和WebWork的结合,具有稳定性和高性能。在深入理解Struts2的工作原理时,源码分析是必不可少的步骤。Struts2的核心设计理念和设计模式相比Struts1.x有了...

    struts2文件上传下载源代码

    这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`<input type="file">`...

    最新Struts2开源实例代码以及Struts2源码

    这份"最新Struts2开源实例代码以及Struts2源码"包含了Struts2框架的最新版本2.3.12的应用示例和源码,对于深入理解Struts2的工作机制和开发实践非常有帮助。 首先,我们来看`struts-2.3.12-apps.gz`,这个文件很...

    struts2 源码解读

    通过阅读源码,我们可以了解到Struts2如何处理Action的请求映射、拦截器的执行逻辑、结果的渲染等细节。此外,还可以深入到动态方法调用、类型转换、异常处理等方面,这些都是Struts2处理请求和响应时的重要环节。 ...

    struts2深入详解源码1-5章

    Struts2是Java Web开发中一个...通过阅读源码和实践项目,你可以深入理解Struts2的工作原理,提升在Java Web开发中的技能水平。同时,提供的jar包可以帮助你在本地环境中快速搭建和运行示例,加深理论与实践的结合。

Global site tag (gtag.js) - Google Analytics