struts2 Action创建过程分析
//源头:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
===================================
第零步:Struts Filter初始化
===================================
关键概念:
InitOperations
PrepareOperations
ExecuteOperations
FilterHostConfig
Dispatcher
===================================
第一步:ActionMapping创建
===================================
URL:http://localhost:8080/basic/My.do
对于浏览器发出的每个新的request,都会创建一个ActionMapping对象,
这里的request、response、servletContext等servlet基本元素,都是经过应用服务器(如Tomcat)包装过的实现
struts2的所有细节都包含在Dispatcher的serviceAction方法中
在详细分析之前,先介绍一个很重要的类:ActionContext,该类利用ThreadLocal持有一个action执行过程中要用到的所有对象,如session,application,valueStack...
回到Dispatcher.serviceAction(...):
(1)创建ValueStack,ValueStack可以看作是呈现层的数据源(有待研究...)
(2)创建ActionProxy

createAction() {//... action = objectFactory.buildAction(proxy.getActionName(), proxy.getNamespace(), proxy.getConfig(), contextMap);//...} List<InterceptorMapping> interceptorList = new ArrayList<InterceptorMapping>(proxy.getConfig().getInterceptors()); interceptors = interceptorList.iterator();===================================
action创建过程大致分析完毕。
待补充的内容
(1)objectFactory.buildAction的执行过程(struts2 & spring)
(2)action执行过程