Struts2 流程原理

一、流程图

  

(转)

二、流程详解

  1、服务器传递来的请求,通过ActionContextClearUp、other filters、最后到达StrutsPrepareAndExecuteFilter

  2、StrutsPrepareAndExecuteFilter 向 ActionMapper 询问,来决定这个请求是否需要调用某个Action 

  3、如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter 把请求的处理交给ActionProxy

  4、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类 ,这里,我们一般是从struts.xml配置中读取(也可以通过注解)

  5、ActionProxy创建一个ActionInvocation的实例

  6、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用

三、核心类或接口

  1、ActionConfig:负责从struts.xml文件中读取配置;

  2、ActionSupport:我们自己实现的Action类一般都继承ActionSupport类;

  3、ActionContext:是Action运行的环境,为Action类提供一些信息;

  4、ActionProxy:是如何获取Action;

  5、ActionInvocation:是如何执行Action。

四、ActionInvocation Action调度者

  1、对如何执行Action进行了封装

  2、ActionInvocation是 Xworks 中Action调度的核心。而对Interceptor 的调度,也正是由ActionInvocation负责

  3、ActionInvocation 是一个接口,而DefaultActionInvocation 则是Webwork 对ActionInvocation的默认实现

  4、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。

    在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

五、ActionProxy Action代理

  1、对如何根据请求中的URL查找Action进行了封装

  2、所有指向Action的Http请求,共用一个ActionProxy

原文地址:https://www.cnblogs.com/zxguan/p/7805765.html