值栈

1、什么是值栈

ValueStack

  • ValueStack其实类似于一个数据中转站(Struts2中的数据都保存在ValueStack)
    • ValueStack接口,实现OgnlValueStack对象
    • ValueStack贯彻整个Action的生命周期(action一旦创建,框架就会自己创建一个ValueStack)

2、值栈的结构

  • ValueStack中有两个主要的区域
    • root区域 :实质是ArrayList,里面一般放置对象。获取root中的值不需要加#
    • context区域 :实质是一个Map,里面放置的是web开发的常用对象数据的引用,获取context中的数据要加#
    • 操作值栈通常操作的都是ValueStack中的root区域

3、值栈与ActionContext的关系

  • ServletContext:Servlet的上下文
  • ActionContext :Action的上下文
    • 当请求发过来的时候,执行过滤器doFilter方法,在这个方法中创建ActionContext,在创建ActionContext过程中创建ValueStack,将ValueStack对象传给ActionContext对象,所以可以使用ActionContext获取值栈的值
    • ActionContext对象之所以可以访问servlet的API(访问域对象数据)是因为在其内部有值栈的引用

猜你喜欢

转载自blog.csdn.net/qq_43642812/article/details/84453349