深入XWork设计原理


0x01 基于人机交互的请求响应模式主要由哪三大要素构成 ?

  1. 沟通协议
  2. 请求内容
  3. 相应内容

0x02 在Java语言中 ,有哪三种主要的请求响应的实现模式 ?

  1. 参数-返回(Param-Return)模式.
  2. 参数参数(Param-Param)模式, 也成为Servlet模式.
  3. POJO模式:属于线程安全模式,和以上模式有这点本质的区别。

struts

0x03 什么是数据流 ?什么是控制流 ?

  1. 数据流: 描述程序运行过程中数据的流转方式和行为状态
  2. 控制流:控制程序逻辑执行的先后顺序

0x04 数据在进行存储和传输时 ,有哪三种具体的表现形式 ?

  1. Map
  2. FormBean
  3. POJO

0x05 XWork的宏观视图中蕴含着哪三大体系 ?它们互相之间形成了什么样的关系 ?

  1. 核心分发器(Disptcher) : 作为XWork框架的调用者和驱动执行者.
  2. XWork的控制流体系 : XWork在进行请求相应的一些列执行元素,其中包括 ActionProxy、ActionInvocation、Interceptor、Action、Result.
  3. XWork的数据流体系 : XWork在进行请求相应时依赖的数据环境元素,其中包括 ActionContext、ValueStack。
  4. 以上三者之间形成了调用关系(Disptcher调用XWork框架)和映衬关系(你中有我,我中有你,如控制流控制的数据流)

struts2

0x06 XWork的数据流体系由哪两大元素构成 ?它们之间有什么关系 ?

  1. ActionContext 数据环境 : 是一个独立的数据结构,其主要的作用是为了XWork的执行提供数据环境。
  2. ValueStack 数据访问环境 : 本身是一个数据结构,起主要作用是对OGNL计算进行扩展。
  3. 以上两者之间关系: ValueStack赋予了ActionContext数据计算能力,且似的ValueStack成为一个可以进行数据访问的环境。

0x07 XWork的控制流体系由哪五大元素构成 ?它们在逻辑上又如何进行划分 ?

  1. Action 核心处理类: XWork中定义的核心事件处理接口。
  2. Interceptor 拦截器:本身是AOP的概念, 表示对程序的某个逻辑执行点进行拦截,从而能够在这个逻辑执行点前、后,进行逻辑扩展。
  3. Result 执行结果:用于对Action核心处理类相应后的结果处理。
  4. ActionProxy 执行环境: XWork框架的执行入口,主要作用就在于对外屏蔽整个控制流核心元素的执行过程 ,对内则为Interceptor、Action、Result等事件处理节点对象提供一个无干扰的执行环境。
  5. ActionInvocation 核心调度器:组织Action、Interceptor、Result等事件处理节点对象执行次序的核心调度器.

XWork控制流元素的一个形象比喻
XWork控制流被划分为五大元素 : Action 、 Interceptor 、 Result 、 ActionProxy 、 ActionInvocation。我们可以使用一个战斗序列来对这五大元素之间的关系进行诠释 。每当一个战役打响的时候 ,总指挥部总是需要分派一个具体番号的部队 ( ActionProxy )来执行战斗 。任何一支部队 ,都有主力军 ( Action )和策应部队 ( Interceptor ) 。主力军 ( Action )负责核心战斗 ,而策应部队 ( Interceptor )则负责对主力部队进行策应和援助 。然而 ,所有的战斗指令都是由部队的指挥官 ( ActionInvocation)决定的 。指挥官 ( ActionInvocation)是一个部队 ( ActionProxy )的核心 ,他负责主力部队 ( Action )和策应部队 ( Interceptor )的调度 。当一场战斗结束以后 ,指挥官 ( ActionInvocation)还要负责指挥部队下一步的动向 ( Result ) ,是乘胜追击敌人 ,还是继续待命 。