zoukankan      html  css  js  c++  java
  • Struts2 源代码学习 (一)

    Struts执行流程图如下所示:


    系统 :

    1,整体的组织体结构
    2,执行流程
    3,特性


    执行流程:
    1,一个初始的请求到达了servlet容器
    2,这个请求要通过一系列的过滤链
    3,这个链包括ActionContextCleanUp过滤器,这个过滤器用于当集成了SiteMesh Plugin技术时,
    4,接着FilterDispatcher被调用,
    5,FilterDispatcher按顺序查询这个ActionMapper去决定这个请求是否应该调用一个Action
    6,如果这个ActionMapper决定了一个Action应该被调用,FilterDispatcher就委托控制给ActionProxy
    7,这个ActionProxy就会查询框架的配置文件struts.xml
    8,这个ActionProxy创建了一个ActionInvocation对象
    9,ActionInvocation对象的责任是命令模式的实现,这个包括在调用自己的Action之前调用任何拦截器
    10,一旦这个Action返回结果,这个ActionInvocation就负责在struts.xml文件中查找和Action result code相关联的结果
    11,这个结果被执行,通常(但不总是)这个结果会被以jsp或者FreeMarker的形式被返回
    12,当返回的时候,这个模板可以使用框架提供的struts标记
    13,其他的一些组件会同ActionMapper协同工作,以返回合适的URL作为额外的请求。
    14,拦截器会再次被执行,最后,这个响应将会通过web.xml中的过滤配置被返回
    15,如果这个ActionContextCleanUp过滤器存在的话,这个FilterDispatcher将不会清除
    这个ThreadLocal "ActionContext"
    16,如果这个ActionContextCleanUp过滤器不存在,这个FilterDispatcher将不会清除所有的
    ThreadLocal


    特性:
    1,在这个架构中的所有对象都会被ObjectFactory对象创建,这个ObjectFactory对象是可插拔式,我们可以提供我们自己的ObjectFctory,
    当需要知道这些对象什么时候被创建时,一个流行的ObjectFactory被实现通过Spring插件
    2,动态代理


    对于整体结构这个方面还没有相关的学习资料,如果有这方面资料请介绍给我qq362601125



  • 相关阅读:
    我的物联网项目(七)前期线上事故
    我的物联网项目(六)推广策略
    我的物联网项目(五)下单渠道
    我的物联网项目(四)订单系统
    我的物联网项目(三)平台架构
    我的物联网项目(二)初建团队
    我的物联网项目(一)开端
    從需求分析開始
    提升GDI画图的效率
    C#写COM组件,JS调用控件
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/5986855.html
Copyright © 2011-2022 走看看