目录
Struts2的执行流程分析
/    

Struts2的执行流程分析


Struts介绍

		Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)
    立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
    其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样
    的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有
    着太大的变化,但是相对于WebWork,Struts 2的变化很小。

执行流程分析

  1. 浏览器发送一个请求(HttpServletRequest)
  2. 程序会调用StrutsPrepareAndExcuteFilter, 然后询问ActionMapper请求是否需要调用某个Action
  3. 如果ActionMapper决定调用某个Action,StrutsPrepareAndExcuteFilter会把请求的处理交给ActionProxy.
  4. ActionProxy通过配置管理器(Configuration Manager)从配置文件(struts.xml)中读取框架的配置信息,从而找到需要调用的Action类
  5. ActionProxy会创建一个ActionInvocation的实例。
  1. ActionInvocation使用命名模式来调用Action,在调用Action前,会依次调用所有配置的拦截器(Intercepter1、Intercepter2、...)。
  2. 一旦Action执行完,返回结果字符串,ActionInvocation就会负责查找结果字符串对应的result,然后执行这个result。通常情况下result会调用一些模板(JSP等)来呈现页面.
  3. 产生的result信息返回给ActionInvocation,此过程中拦截器会被再次执行(顺序与Action执行之前相反).
  4. 产生一个HttpServletResponse的响应行为,通过SrutsPrepareAndExecuteFilter反馈给客户端

xml配置信息模板

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>

    <package name="hello" namespace="/" extends="struts-default">
        <action name="HelloAction" class="cn.lacknb.TestAction">
            <result name="success">/success.jsp</result>
        </action>
    </package>

</struts>

标题:Struts2的执行流程分析
作者:gitsilence
地址:https://blog.lacknb.cn/articles/2019/08/04/1577974163440.html