Struts2整体架构图:
从上图我们可以看出struts2的整个大体的执行流程: 1、请求对象经过Filter chain(过滤器链)到达Dispatcher,由一个Filter充当,2.1.3之前的版本,用org.apache.struts2.dispatcher.FilterDispatcher,否则,用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。 从Struts2.1.3开始,将废弃ActionContextCleanUp过滤器,而在StrutsPrepareAndExecuteFilter过滤器中包含相应的功能。常规情况官方推荐使用StrutsPrepareAndExecuteFilter替代FilterDispatcher。 2、Dispatcher通过ActionMapper来决定该请求是否需要调用Action、调用哪个Action 3、ActionMapper需要调用Action,Dispatcher把请求的处理交给ActionProxy 4、ActionProxy通过ActionMapping(读取struts.xml)和ConfigurationManager找到调用的具体Action类 5、ActionProxy创建一个ActionInvocation实例,该实例是后续整个流程的实际调度者 6、ActionInvocation调用真正的Action,返回Result(jsp、freemarker、velocity..),返回之前需要做某些操作可以实现PreResultListener,这些操作的前后涉及到一系类拦截器的调用 7、返回一个HttpServletResponse对象 下面是从Iteye上找的downpour博客中的一幅图,在此贴出他的博客地址,里面有一个struts2的系列,自我感觉非常不错 这张XWork的宏观示意图是整个XWork乃至整个Struts2的核心。此图内涵丰富,几乎涵盖了XWork的元素构成、XWork中元素的调用关系、XWork的执行层次以及XWork与外部调用接口之间的关系等所有XWork框架的核心内容。