博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2中ValueStack结构和总结
阅读量:6808 次
发布时间:2019-06-26

本文共 935 字,大约阅读时间需要 3 分钟。

【ValueStack和ActionContext的关系】

   首先,从结构上来看ValueStack是ActionContext的一个组成部分,是对ActionContext功能的扩展。ActionContext是一个容器结构,是Struts2中用于数据存储的的场所,而ValueStack则是一个具备表达式引擎能力的数据结构,提供了一个可以进行表达式引擎的计算场所。Struts2将ValueStack置于ActionContext目的是为静态的数据添加动态的计算能力。以下也是ValueStack和ActionContext的包含关系。

【ValueStack的结构】

    ValueStack是XWork用以对Ognl计算进行扩展的一个特殊的数据结构,ValueStack从数据结构的角度被定义为一组对象的集合,在进行Ognl计算时都被视作root对象,而Ognl是不支持多个root对象。ValueStack中的数据,分两个部分存放:root(对象栈)和context(一个map结构):

 

    ValueStack有两部分组成:Context和root获取两个对象的方法如下:

    1、向Context中存取对象的方法

    (1ActionContext.getContext()

             .put(key,value);

             .get(key);

                   

    (2)ActionContext.getContext().getValueStack()

               .put(key,value);

               .get(key);

                                 

    2、向stack中存取对象的方法:

      ActionContext.getContext().getValueStack()

                     .push();

                     .pop();

    另外还要注意一点的是ognl表达式访问request、session等作用域的对象前面要加#,如#request.user访问request作用域的user对象,其原因也很容易理解,因为request、session等对象被封装到了ValueStack的Context中,Context是一个Map结构,访问Context中的内容是要加#。

转载于:https://www.cnblogs.com/xtdxs/p/6526071.html

你可能感兴趣的文章
5种IO模型
查看>>
选择排序之python实现
查看>>
mysql 分库分表 ~ ShardingSphere生态圈
查看>>
BFS+模拟 ZOJ 3865 Superbot
查看>>
二分搜索 POJ 1064 Cable master
查看>>
Opencv笔记(二十一)——傅里叶变换
查看>>
Codeforces Round #215 (Div. 2) 解题报告
查看>>
GitHub上常用命令(工作中几乎每天用到的命令)
查看>>
动态规划——Palindrome Partitioning II
查看>>
zoj 1440
查看>>
英特尔® 实感™ SDK 架构
查看>>
vuex - 学习日记
查看>>
面试总结
查看>>
【转】虚拟机检测技术
查看>>
JS基础之开篇
查看>>
初识python: 生成器并行(做包子,吃包子)
查看>>
[bzoj 1861][zjoi2006] 书架
查看>>
java练习题-求int类型N值的阶乘
查看>>
C++ Vector 使用心得
查看>>
设计模式之(Composite)组合模式
查看>>