Struts中的值栈
2015-10-19 00:00
495 查看
什么是值栈?
值栈:ValueStack.其贯穿整个 Action 的生命周期(每个 Action 类的对象实例都拥有一个 ValueStack 对象). 相当于一个数据的中转站. 在其中保存当前s.* 创建一个Action的实例,创建一个ValueStack.
Struts 框架把 ValueStack 对象保存在名为 “struts.valueStack” 的请求属性中,request中.
* 将值栈保存在request域中一份. request.setAttribute(“struts.valueStack”,valueStack);
值栈的内部结构?
值栈的内部结构有两个逻辑单元:* 一个对象栈 :root CompoundRoot就是一个ArrayList.
* 一个ContextMap :context OgnlContext就是一个Map.
值栈ValueStack 和 ActionContext关系? --- 值栈的创建
查看源码;* 在创建ActionContext时候,创建了ValueStack对象,同时将ValueStack存入到ActionContext中.
* 可以通过ActionContext对象获得到值栈对象
1 2 3 4 5 6 | public class A{ private B b; } public class B{ private A a; } |
如何获得值栈对象?
1.通过ActionContext对象获得值栈.// 1.获得值栈方式一:
1 | ValueStack stack1 = ActionContext.getContext().getValueStack(); |
// 2.获得值栈方式二:
1 | ValueStack stack2 = (ValueStack) ServletActionContext.getRequest().getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY); |
向值栈保存数据?
一般情况下说操作值栈:指的是操作值栈的root部分.* push :将对象压入到栈顶.
* set :将对象压入到栈顶.
如果没有手动调用push或者set的时候:Action对象默认是在栈顶的.
* Action中的属性是否在栈中?一定在.
如果Action实现ModelDriven接口了:
* ModelDriven对象就会在栈顶.
在页面通过struts2标签 获取值栈内容?
获得root数据:1 2 3 4 5 6 7 8 | <s:property value= "[1].top" /> <s:property value= "name" /> <s:property value= "user.username" /> <s:property value= "user.password" /> <s:property value= "username" /> <s:property value= "password" /> <s:property value= "list[0].username" /> <s:property value= "list[0].password" /> |
1 2 3 4 5 | 获得request中的数据:< s:property value = "#request.name" />< br /> 获得session中的数据:< s:property value = "#session.name" />< br /> 获得application中的数据:< s:property value = "#application.name" />< br /> < s:property value = "#attr.name" /> < s:property value = "#parameters.username" /> |
相关文章推荐
- Windows上运行Eclipse使用virtualbox搭建的Ubuntu的hadoop集群服务
- eclipse内存占用配置
- java中如何打war包
- Java Web 登录采用非对称加密(RSA算法)
- Java 复制文件和目录
- Java多线程开发技巧
- JAVA 使用Dom4j 解析XML
- JAVA文件中获取路径及WEB应用程序获取路径方法
- java反射调用私有方法和修改私有属性
- Java中的的XML文件读写与DOM
- Java实验报告(实验三)
- Java XML解析技术
- java实验报告(实验三)
- java was started but returned exit code = -80306369
- java设计模式系列--职责链模式
- Eclipse的一些简单设置
- spring mvc 500错误
- JAVA I/O 系统
- Java内部类不能引用本地变量?
- eclipse添加第三方源码