Struts2值栈
二、ValueStack
1.概述
ValueStack是一个接口
com.opensymphony.xwork2.util.ValueStack |
它的实现类是
com.opensymphony.xwork2.ognl.OgnlValueStack |
①作用
Struts2为每一个请求都分配了一个ValueStack对象,目的是为每一个请求都提供一个临时的数据存储空间。
②两个数据容器
分析OgnlValueStack源码,其中包含两个重要的数据容器
CompoundRoot root;//通常称为“对象栈” transient Map<String, Object> context;//通常称为“Map栈” |
③对象栈
[1]CompoundRoot类声明
//继承自ArrayList public class CompoundRoot extends ArrayList { |
[2]CompoundRoot是在List基础之上实现的“栈”——后进先出。
//返回栈顶对象 public Object peek() { return get(0); }
//删除栈顶对象并返回 public Object pop() { return remove(0); }
//将对象压入栈顶 public void push(Object o) { add(0, o); } |
[3]如何方便的查看值栈中的数据?
(1)在JSP页面上导入Struts2标签库
<%@ taglib uri="/struts-tags" prefix="s" %> |
(2)使用<s:debug></s:debug>标签
(3)点击[Debug]超链接即可展开值栈数据列表
[4]对象栈中的数据
(1)默认情况下对象栈中的数据
可以看到,默认情况下Struts2会将当前Action对象压入值栈的栈顶,前面提及的message属性值就是从栈顶Action对象中获取的。
如何理解“当前Action”?
- 当前请求的目标Action
- 转发到当前页面的“来源”Action
(2)手动压入对象后
本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源,欢迎大家关注尚硅谷公众号(atguigu)了解更多。