现在的位置: 首页 > 综合 > 正文

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

2013年09月21日 ⁄ 综合 ⁄ 共 1665字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.