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)的更多相关文章

  1. 10.Struts2值栈

    1.什么是值栈 * 值栈就相当于Struts2框架的数据的中转站,向值栈存入一些数据.从值栈中获取到数据. * ValueStack 是 struts2 提供一个接口,实现类 OgnlValueSta ...

  2. struts2值栈内部数据结构详解

    值栈是struts2内部一片很重要的区域,我在初学的时候,发现对于值栈这个数据结构的理解不是很深刻.例如OGNLContext是什么,ActionContext和值栈有什么关系.为什么ActionCo ...

  3. Struts2 - 值栈(ValueStack)

    1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ...

  4. struts2中的值栈对象ValueStack

    ValueStack, 即值栈对象. 值栈对象: 是整个struts数据存储的核心,或者叫中转站. 用户每次访问struts的action,都会创建一个Action对象.值栈对象.ActionCont ...

  5. struts2值栈ValueStack中都有哪些东西?

    com.opensymphony.xwork2.dispatcher.HttpServletRequest application com.opensymphony.xwork2.dispatcher ...

  6. struts2值栈分析

    前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据, ...

  7. Struts2值栈详解

    1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的.  2). ...

  8. 【基于初学者的SSH】struts2 值栈的详解与struts2标签库+ognl表达式

    一:什么是值栈:struts2里面本身提供的一种存储机制,类似于域对象,值栈,可以存值和取值 特点:先进后出,最上面的元素叫做栈顶,也叫压栈. <s:debug></s:debug& ...

  9. Struts2值栈

    一.前言 很多事儿啊,就是“成也萧何败也萧何”,细想一些事儿心中有感,当然,感慨和本文毛关系都没有~想起之前有篇Struts2中值栈的博客还未完工,就着心中的波澜,狂咽一把~ 二.正文 博文基于:st ...

随机推荐

  1. 重装mysql

    重装mysql方法. 转自http://blog.sina.com.cn/s/blog_73000beb01012eh4.html 1.删除 mysql 1.1 sudo apt-get autore ...

  2. ADTS结构

    ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式.转载请注明来自:http://www.binkery.com/ ADTS内容及结构一般情况下 ...

  3. 03、HelleBaiduMap

    D:\百度地图\百度地图\资料\百度地图与定位SDK\百度地图v3.5.0\BaiduMap_AndroidSDK_v3.5.0_All\BaiduMap_AndroidSDK_v3.5.0_Docs ...

  4. Sublime Text 汉化插件

    https://blog.csdn.net/heyangyi_19940703/article/details/51869502 一.Sublime Text工具介绍: Sublime Text 是一 ...

  5. PCB genesis连孔加除毛刺孔(槽孔与槽孔)实现方法(三)

    一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...

  6. E20171005-ts

    collapse  n. 垮台; (身体的) 衰弱;              vt. 使倒塌; 使坍塌; 使瓦解;               vi. 崩溃; 倒塌; 折叠; (尤指工作劳累后) 坐 ...

  7. js模拟复制

    现在浏览器种类也越来越多,诸如 IE.Firefox.Chrome.Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了.   一.实现点击按钮,复制文本框中的的内 ...

  8. jquery中对于为一组标签赋予点击事件

    可以用each,但是each不能对动态的元素进行事件的绑定, 不过,其实也很简单,只需要获取所有的标签集,然后用动态绑定的方法,比如live进行绑定就可以了. 有时候,其实不难,只是自己想的太过复杂. ...

  9. vue工程npm run serve/start/dev启动时,node_modules文件报:Cannot read property 'range' of null 错误

    改问题是"babel-eslint"版本更新问题导致的: 给大家一个最简单粗暴的解决方案: 在项目里找到对应的工程:直接删除里面的node_modules文件夹,然后重新npm i ...

  10. 虚拟机下安装VM

    Linux(CentOS 7)命令行模式安装VMware Tools 详解 [日期:2017-05-02] 来源:Linux社区  作者:Linux [字体:大 中 小] 本篇文章主要介绍了如何在Li ...