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

 

1. Struts2架构图html

请求首先经过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请求流程
一、客户端发送请求
二、请求先经过ActionContextCleanUp-->FilterDispatcher
三、FilterDispatcher经过ActionMapper来决定这个Request须要调用哪一个Action
四、若是ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,这儿已经转到它的Delegate--Dispatcher来执行
五、ActionProxy根据ActionMapping和ConfigurationManager找到须要调用的Action类
六、ActionProxy建立一个ActionInvocation的实例
七、ActionInvocation调用真正的Action,固然这涉及到相关拦截器的调用
八、Action执行完毕,ActionInvocation建立Result并返回,固然,若是要在返回以前作些什么,能够实现PreResultListener。添加PreResultListener能够在Interceptor中实现。java

Come From:http://qidaoxp.javaeye.com/blog/492295架构

相关文章
相关标签/搜索