struts2(十一)运行流程


struts2 体系结构图:

struts2(十一)运行流程_第1张图片

运行流程:

>客户端初始化一个指向Servlet容器(例如Tomcat)的(HttpServletRequest)请求;

>请求通过一系列的过滤器,例如会依次通过ActionContext CleanUp,其他过滤器(Othter Filters、SiteMesh等),FilterDispatcher;

(注:从struts2.1.3后就不需要配置ActionContextCleanUp过滤器了,该过滤器的作用是清空值栈等,但struts会留下自己session和Attribute等)

>StrutsPrepareAndExecuteFilter是控制器的核心,就是MVC的Struts 2实现中控制层(Controller)的核心。StrutsPrepareAndExecuteFilter询问ActionMapper是否需要调用某个Action来处理这个(HttpServletRequest)请求,如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter则把请求的处理交给ActionProxy;

> ActionProxy 通过 ConfigurationManager 询问框架的配置文件,确 定需要调用的 Action 类及 Action 方法

>ActionProxy 创建一个 ActionInvocation 的实例,并进行初始化;

>ActionInvocation 实例在调用 Action 的过程前后,涉及到相关拦截 器(Intercepter)的调用;

>Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配 置找到对应的返回结果。调用结果的 execute 方法,渲染结果。在渲染 的过程中可以使用 Struts2 框架中的标签;

>执行各个拦截器 invocation.invoke() 之后的代码;

>把结果发送到客户端 。

时序图:

struts2(十一)运行流程_第2张图片

你可能感兴趣的:(struts2)