• Struts2的访问流程


    1、流程图:

     通过地址先经过过滤器,然后过滤器查看配置文件中的命名空间(package中的namespace)中是否有hello,再去action中的name属性中查找是否有HelloAction,

     2、访问流程详解

    (1)首先,客户端发送请求,请求首先经过过一系列的滤器(这些过滤器中有一个叫ActionContextCleanUp的可选过滤器,这个过滤器对于Struts和其他框架的集成很有帮助)。

    (2)接着FilterDispatcher(StrutsPrepareAndExecuteFilter)被调用,FilterDispatcher(StrutsPrepareAndExecuteFilter)询问ActionMapper来决定这个请求是否需要某一个Action。经过过滤器后需要经过ActionMapper类,该类将请求的信息处理好并封装为ActionMapping对象给过滤器。

    (3)过滤器判断该请求是否需要Struts2处理。

    (4)如果需要Struts2处理,则将ActionMapping转交给ActionProxy类。

    (5)ActionProxy类通过ActionMannger读取配置文件,找到需要调用的Action类,并将结果返回给ActionProxy类。此时ActionProxy类既知道了要访问的目的地,又通过配置文件知道了要访问哪些包等信息。

    (6)ActionProxy创建一个ActionInvocation实例,ActionProxy类将Action和Interceptors都转交给ActionInvocation。ActionInvocation实例使用命名模式来调用,在使用Action的过程前后,涉及到相关拦截器的调用

    (7)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果,返回结果通常是(但不总是,也有可能是另一个Action链),一个需要被表示的jsp或者FreeMarker的模板,在表示的过程中可以使用Struts2框架中继承的标签,在这个过程中要涉及到ActionMapper

    (8)一个inteceptor可以代表一个功能。

  • 相关阅读:
    如何添加和删除本地存储中的数据?
    本地存储和cookies之间的区别是什么?
    那么如何使用WebSQL?
    WebSQL是HTML 5规范的一部分吗?
    WebSQL是什么?
    什么是本地存储的生命周期?
    本地存储和cookies之间的区别是什么?
    什么是多线程中的上下文切换?
    web workers是什么,为什么我们需要web workers?
    连接点?
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12190087.html
Copyright © 2020-2023  润新知