值栈是每一次请求对象的轻量级数据中心
每一次请求都会创建一个ValueStack,ValueStack封装该次请求的数据信息
(1)ValueStack是一个接口
(2)ValueStack贯穿整个Action的生命周期(一次请求),每个Action实例都有ValueStack对象,ValueStack相当于是中转站,ValueStack封装了请求的信息和Action对象的其他相关信息
(3)获取ValueStack:通过ActionContext对象
ValueStack vs = ActionContext.getContext().getValueStack();
(4)ValueStack里有两个重要的属性:
root:表示栈的数据结构(后进先出) ,ArrayList类型 (一般单个对象放入root)
context:上下文 , Map类型 (一般集合放入context)
root:主要用来存储Action中的信息
context:主要用来存储映射关系的信息
context存在对root对象的引用,所以拿到context就可以拿到root
context中还存在request,session,application,attr,paramerters等对象的引用
拿到context就可以拿到ValueStack里的所有数据
从root中获取数据 直接使用属性名猎取, <s:property value = "属性名"/>
从context中获取数据,#key <s:property value="#key">
..把数据放入到root中 : 在Action中提供一个可访问的属性(getter方法)
..把数据放入到context中:ActionContex.put(String name , Object value)