Struts2 值栈总结(ValueStack)
1、获取值栈
- //获取值栈的第一种方式
- ValueStack valueStack1 = (ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack");
- //获取值栈的第二种方式
- ValueStack valueStack2 = ActionContext.getContext().getValueStack();
- System.out.println(valueStack1);
- System.out.println(valueStack2);
2、值栈包括两部分:root栈和map栈
1、root栈:继承了List接口,又称之为对象栈
2、map栈:实现了Map接口,又可以称之为上下文栈(context)
3、Root栈的存值和取值
1、存值(先进后出)
- 1、Push压栈 (获取值栈)
- valueStack.push("zhangsan");
- 2、set 压入栈顶 (键值对形式)
- //set:创建一个map集合,将数据存入该集合中,最终将map集合压入root栈栈顶
- valueStack2.set("name","wangwu");
- 3、使用成员变量方式
- private String name = "maliu";
- public String getName() {
- return name;
- }
2、取值
- 1、Push 取值
- <!--
- 通过s:property标签获取数据
- value:是一个ognl表达式,通过valu值可以到值栈中去查询对应的数据
- [0].top:表示获取root栈栈顶的数据
- -->
- 获取栈顶数据:<s:property value="[0].top"/><br>
- 获取栈顶数据:<s:property/><br>
- 2、set 取值 Or 成员变量方式存值
- <%--
- 如果栈顶是map集合:通过集合的key可以直接获取value值
- 通过name到值栈中从上往下进行查找,找到的第一个进行返回
- --%>
- 获取栈顶map中的数据:<s:property value="name"/><br>
3、Map栈的存值和取值
1、存值 or 取值(表示直接从map栈查找,而不是从root栈栈顶开始从上往下查找。)
- 1、Put 方法存值
- //将数据存入map栈
- //由于map栈本质就是一个集合,因此存储方式和map一样
- ActionContext.getContext().put("name", "tianqi");
- 2、取值
- <%--
- 从map栈获取数据:在ognl表达式中使用#表示直接从map栈查找数据
- --%>
- 获取map栈中的数据:<s:property value="#name"/>
4、%主要作用是控制解析或者不解析
“%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表 达式,就比如:<s:textfield value=”%{username}”>。 也可在OGNL表达式中,添加%{‘ ’}或者’’,来让其变成普通 字符串而不解析,比如:<s:property value=”%{‘username}’”> 简单的说:%表达式的作用是,可以让字符串变成支持ognl表达式的解析,也可以让解析的表达式变成字符串,
5、$号的使用
$主要作用是在相关配置文件中引入OGNL表达式,让其在配置文件中也能解析OGNL表达式。(换句话说:$用于在配置文件中获取值栈的值用的。)
Struts2 值栈总结(ValueStack)的更多相关文章
- 10.Struts2值栈
1.什么是值栈 * 值栈就相当于Struts2框架的数据的中转站,向值栈存入一些数据.从值栈中获取到数据. * ValueStack 是 struts2 提供一个接口,实现类 OgnlValueSta ...
- struts2值栈内部数据结构详解
值栈是struts2内部一片很重要的区域,我在初学的时候,发现对于值栈这个数据结构的理解不是很深刻.例如OGNLContext是什么,ActionContext和值栈有什么关系.为什么ActionCo ...
- Struts2 - 值栈(ValueStack)
1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ...
- struts2中的值栈对象ValueStack
ValueStack, 即值栈对象. 值栈对象: 是整个struts数据存储的核心,或者叫中转站. 用户每次访问struts的action,都会创建一个Action对象.值栈对象.ActionCont ...
- struts2值栈ValueStack中都有哪些东西?
com.opensymphony.xwork2.dispatcher.HttpServletRequest application com.opensymphony.xwork2.dispatcher ...
- struts2值栈分析
前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据, ...
- Struts2值栈详解
1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ...
- 【基于初学者的SSH】struts2 值栈的详解与struts2标签库+ognl表达式
一:什么是值栈:struts2里面本身提供的一种存储机制,类似于域对象,值栈,可以存值和取值 特点:先进后出,最上面的元素叫做栈顶,也叫压栈. <s:debug></s:debug& ...
- Struts2值栈
一.前言 很多事儿啊,就是“成也萧何败也萧何”,细想一些事儿心中有感,当然,感慨和本文毛关系都没有~想起之前有篇Struts2中值栈的博客还未完工,就着心中的波澜,狂咽一把~ 二.正文 博文基于:st ...
随机推荐
- Java —— 正则表达式
0. 注意 正则表达式里的点号(.),可以匹配除换行符之外的所有字符 Java 语言同其他语言中的正则表达式的不同在于: 对 \(反斜线)的不同处理 \\:其他语言中,表示在正则表达式中插入普通的反斜 ...
- ubuntu系统快捷键设置
1.打开'系统设置' 2.点击键盘 3.选择快捷键,查看和修改对应的快捷键.
- redhat6 改 centos yum 源
**redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,重启安装其他yum源,再配置其他源.** 本文包括配置本地源及第三方源.第三方源包括:网 ...
- 理解JavaScript中的闭包
(这篇文章后面关于onclick事件的解释是错误的,请不要被误导了2016.6.16) 闭包这个概念给JavaScript初学者心中留下了巨大的阴影,网络上关于闭包的文章不可谓不多,但是能让初学者看懂 ...
- 洛谷1002 容斥原理+dfs OR DP
//By SiriusRen #include <bits/stdc++.h> using namespace std; #define int long long ,,,,-,-,-,- ...
- Java内存泄漏及对象引用的4种类型
转自: http://www.cnblogs.com/qq78292959/archive/2011/07/25/2116123.html 总结: 引用分类: 强引用,弱引用,软引用,虚引用.虚引用必 ...
- Combox两级联动会经常出现的错误
例如: 当我们遇到这种情况:(下拉框的隐藏值和显示值皆为实体类进行绑定值时)下拉框的隐藏值并不能成功获取到. 我们就可以使用下面 的方案来解决 ok ,成功获取到隐藏值. 还有一个,附加解决方案:
- [ BZOJ 3445 ] Roadblock
\(\\\) \(Description\) 给出一张\(N\) 个点\(M\)条边的无向图,选择一条边使其权值翻倍,求操作后比操作前最短路长度增量最大值. \(1\le N\le 250\),\(1 ...
- Android开发问题-真机调试连接
出现“no debuggable processes”可以: 1)尝试Tools->android->Enable ADB Intergration使之选中: 2)换一根数据线试试. 初次 ...
- JS——undefined、null
1.undefined == false //返回false 2.null == false //返回false 3.undefined == null //返回true 4.und ...