前言
在一些老旧项目里面struts2框架很常见,所有遇到老旧项目时很有必要学习一下一、图解
Struts2 执行流程
二、详细说明
所示的流程图中可以看出,一个请求在 Struts2 框架中的处理大概可以分为以下几个步骤
-
首先客户端浏览器发送一个请求(HttpServletRequest)。
-
接着程序会调用 StrutsPrepareAndExecuteFilter,然后询问 ActionMapper 这个请求是否需要调用某个 Action。
-
如果 ActionMapper 决定需要调用某个 Action,StrutsPrepareAndExecuteFilter 会把请求的处理交给 ActionProxy。
-
ActionProxy 通过配置管理器(Configuration Manager)从配置文件(struts.xml)中读取框架的配置信息,从而找到需要调用的 Action 类。
-
ActionProxy 会创建一个 ActionInvocation 的实例。
-
ActionInvocation 使用命名模式调用 Action,在调用 Action 前,会依次调用所有配置的拦截器(Intercepter1、Intercepter2……)。
-
一旦 Action 执行完,则返回结果字符串,ActionInvocation 就会负责查找结果字符串对应的 Result,然后执行这个 Result。通常情况下 Result 会调用一些模板(JSP 等)呈现页面。
-
产生的 Result 信息返回给 ActionInvocation,在此过程中拦截器会被再次执行(顺序与 Action 执行之前相反)。
-
最后产生一个 HttpServletResponse 的响应行为,通过 StrutsPrepareAndExecuteFilter 反馈给客户端。