1. 关于值栈:

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

I. 可以从 ActionContext 中获取值栈对象
II. 值栈分为两个逻辑部分

                  > Map 栈: 实际上是 OgnlContext 类型, 是个 Map, 也是对 ActionContext 的一个引用. 里边保存着各种 Map:
                  requestMap, sessionMap, applicationMap, parametersMap, attr

                  > 对象栈: 实际上是 CompoundRoot 类型, 是一个使用 ArrayList 定义的栈. 里边保存各种和当前 Action 实例相关的对象.
                  是一个数据结构意义的栈.

2. Struts2 利用 s:property 标签和 OGNL 表达式来读取值栈中的属性值

  • 1). 值栈中的属性值:

> 对于对象栈: 对象栈中某一个对象的属性值

> Map 栈: request, session, application 的一个属性值 或 一个请求参数的值.

  • 2). 读取对象栈中对象的属性:

> 若想访问 Object Stack 里的某个对象的属性. 可以使用以下几种形式之一:

object.propertyName ; object['propertyName'] ; object["propertyName"]

> ObjectStack 里的对象可以通过一个从零开始的下标来引用. ObjectStack 里的栈顶对象可以用 [0] 来引用,
它下面的那个对象可以用 [1] 引用.

[0].message

> [n] 的含义是从第 n 个开始搜索, 而不是只搜索第 n 个对象

> 若从栈顶对象开始搜索, 则可以省略下标部分: message

> 结合 s:property 标签: <s:property value="[0].message" /> <s:property value="message" />

  • 3). 默认情况下, Action 对象会被 Struts2 自动的放到值栈的栈顶.

注意:在使用s:debug标签时,需要设置constant

<constant name="struts.devMode" value="false" />

否则页面上将看不到[Debug]

Struts2 - 值栈(ValueStack)的更多相关文章

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

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

  2. struts2值栈分析

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

  3. Struts2值栈

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

  4. struts2 值栈分析

    目录 一.值栈分为两个逻辑部分 二.Struts2 利用 s:property 标签和 OGNL表达式来读取值栈中的属性值 1.值栈中的属性值: 2.读取对象栈中对象的属性: 3.默认情况下,Acti ...

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

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

  6. Struts2 值栈总结(ValueStack)

    1.获取值栈 //获取值栈的第一种方式 ValueStack valueStack1 = (ValueStack) ServletActionContext.getRequest().getAttri ...

  7. Struts2值栈详解

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

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

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

  9. 值栈ValueStack的原理与生命周期

    1.ValueStack贯穿整个 Action 的生命周期,保存在request域中,所以ValueStack和request的生命周期一样.当Struts2接受一个请求时,会迅速创建ActionCo ...

随机推荐

  1. android 自定义 listView

    目录: 1.主布局 ListView <?xml version="1.0" encoding="utf-8"?><RelativeLayou ...

  2. 如何通过js处理相同时间的信息整合到一起的问题

    背景: 倘若后台已经处理好了时间,也就是 今天,昨天,显示具体日期,那么通过js如何写才能调整成如下形式呢? 今天: 第一条数据 第二条数据 昨天: 第一条数据 第二条数据 具体时间: 第一条数据 第 ...

  3. drupal7 使用(hook_preprocess_HOOK)向各个主题模版里面传递变量

    函数地址:hook_preprocess_HOOK 1 首先解释下hook_preprocess_HOOK这个钩子的含义: hook           _     preprocess  _   H ...

  4. iptables的用例

    iptables书写思路顺序 1.协议 icmp 2.哪个功能和目标:过滤,拒绝 3.数据包流向:外到内 4.哪个链适合:越早越好,INPUT 5.源地址和目标地址 练习1.禁止某些主机或网络访问本机 ...

  5. Linux安装Nignx基于域名的多虚拟主机实战

    看这个文章之前,要保证你的Nginx已经安装成功! 如果没有,请移步到下面这个文章,看完后再回来看! https://www.cnblogs.com/apollo1616/p/10214531.htm ...

  6. linux系统环境下搭建coreseek(+mmseg3) (good)

    1.下载并解压coreseek软件,操作命令如下: wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz 说明:文件下 ...

  7. php生成随机密码的自定义函数

    php生成随机密码的自定义函数 生成一个随机密码的函数,生成的密码为小写字母与数字的随机字符串,长度可自定义. 复制代码代码如下: <?php /*  * php自动生成新密码自定义函数(带实例 ...

  8. xutils3文件上传、下载、get、post请求

    @ContentView(R.layout.activity_xutils3_net) public class XUtils3NetActivity extends Activity { @View ...

  9. 牛客练习赛13 A 幸运数字Ⅰ 【暴力】

    题目链接 https://www.nowcoder.com/acm/contest/70/A 思路 暴力每一个子串 用 MAP 标记一下 然后 最后 遍历一遍 MAP 找出 出现次数最多 并且 字典序 ...

  10. SQL语法结构

    目录 一.增 1.增加字段 2.新建约束 二.删 1.删除字段 2.删除约束 三.改 1.修改字段 一.增 1.增加字段: ALTER TABLE [表名] ADD [字段名] NVARCHAR () ...