十八、ValueStack&ActionContext(非常重点:值栈)
ValueStack&ActionContext(非常重点:值栈)
1、针对用户的每次动作访问,都会创建属于自己的ValueStack对象

2、ValueStack中的的常用方法:功能一定要知道干什么的。实现类OgnlValueStack

- getContext():返回的是一个Map<String,Object>
- *getRoot():返回的是一个CompoundRoot。
CompoundRoot就是一个ArrayList的子类(就是一个List)。实现了一个栈结构

CompoundRoot():默认的构造方法。实际就是创建一个List集合
CompoundRoot(List):用一个集合来初始化一个CompoundRoot对象
cutStack(int):按照集合中的索引,剪出一个新的List集合
peek():取集合中的第一个元素。get(0)
pop():从集合中删除第一个元素
- push(Object):向集合中的第一个元素位置插入数据
peek():CompoundRoot中的第一个元素。get(0) - pop():从CompoundRoot集合中删除第一个元素
- push(Object):向CompoundRoot集合中的第一个元素位置插入数据
- size():获取 CompoundRoot这个集合的大小
- setValue(String,Object):第一个参数,是OGNL表达式。向自己(getContext())得到那个Map中尝试放东西。
- setParameter(String,Object):第一个参数,是OGNL表达式。向自己(getContext())得到那个Map中尝试放东西。
- findString(String expr):返回的是一个String类型的,否则报错.第一个参数,是OGNL表达式。
- findValue():返回的是一个Object。第一个参数,是OGNL表达式。
3、ActionContext
static ThreadLocal<ActionContext> actionContext = new ThreadLocal<ActionContext>();
每个线程都会有唯一的ActionContext,且一个线程中只有一个ActionContext。

getApplication():返回的是一个Map
getContext():放回的当前线程上的ActionContext对象
getContextMap():返回ActionCOntext中的那一个Map
getParameters():返回的是一个Map
getSession():返回的是一个Map
getValueStack():返回的是当前线程中的ValueStack实例
get(String):从ActionContext的Map中获取数据
最终总结:

4、ServletActionContext决定contextMap中会存哪些数据

总结:都是从ActionContext的那个大Map中获取的。
5、在执行动作方法前,contextMap中放了以下东西
contextMap中
key
value
备注
request
ServletRequest中的那个Map
session
HttpSession中的那个Map
application
ServletContext中的那个Map
parameters
请求参数Map<String,String[]>
attr
也是一个AttributeMap
获取数据依次从contextMap中的requestMap、sessionMap、applicationMap中搜索
- push(Object):向集合中的第一个元素位置插入数据
十八、ValueStack&ActionContext(非常重点:值栈)的更多相关文章
- java并发编程(十八)阻塞队列和阻塞栈
阻塞队列 阻塞队列是Java 5并发新特性中的内容,阻塞队列的接口是java.util.concurrent.BlockingQueue,它有多个实现类:ArrayBlockingQueue.Dela ...
- Struts2 - 值栈(ValueStack)
1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ...
- valueStack(值栈)
值栈 值栈(ValueStack)就是 OGNL 表达式存取数据的地方.在一个值栈中,封装了一次请求所需要的所有数据. 在使用 Struts2 的项目中,Struts2 会为每个请求创建一个新的值栈, ...
- OGNL表示式使用和值栈
另外值得参考博客:http://blog.csdn.net/resigshy/article/details/7560573 OGNL是Object Graphic Navigation Langua ...
- Java中的值栈
OGNL表示式使用 和 值栈 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的表达式 ...
- Struts2知识点小结(三)--值栈与ognl表达式
1.问题一 : 什么是值栈 ValueStack 回顾web阶段 数据交互问题? 客户端提交数据 到 服务器端 request接受数据+BeanUtils实体封装 ...
- 值栈(Structs2)
1. 关于值栈: 1). 登陆 时, ${userName} 读取 userName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ValueStack: I. ...
- [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 关于Struts2中的值栈与OGNL表达式
1.1.1 OGNL概述: Object Graphic Navigation Language(对象图导航语言)的缩写 * EL :OGNL比EL功能强大很多倍. 它是一个开源项目. ...
- 值栈和OGNL 之 7.1 值栈
7.1 值栈 7.1.1 值栈是什么 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心. Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action.Resu ...
随机推荐
- laravel查询构造器中别名的问题
Laravel框架对数据库的封装是比较完善的,用起来也比较方便.但之前有一个问题一直困扰着我,就是利用laravel作查询时.如果想给表名或是字段名起别名是比较麻烦的事.但翻阅它的文档不难发现,它提供 ...
- laravel加入验证码类几种方法 && Laravel引入第三方库的方法
1,使用require , inlcude 的方法将验证码类文件包含进来,再进行new 2,将验证码类文件放于Http目录下面,也就是和控制器controller放在一个目录下面,在验证码类文件中加上 ...
- gerrit 配置 apache2 反向代理(转载)
Apache 2 Configuration To run Gerrit behind an Apache server using mod_proxy, enable the necessary A ...
- .nil? .empty? .blank? .present? in Ruby on Rails
We get confused when there are many options to choose from. Same is the case when it comes to use an ...
- springmvc 中RequestMapping注解的使用
1.RequestMapping注解既可以修饰方法,又可以修饰类型,类型指定的url相对于web跟路径,而方法修饰的url相对于类url: 2.RequestMapping的几个属性: value:用 ...
- Java如何获取文件编码格式
1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK. 按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原 ...
- 九度OJ1084
这道题一旦想开,其实思想十分简单的. 首先考虑n为奇数的情况,不难知f(n)=f(n-1).(只需要把n的所有拆分式-1即可……) 然后考虑n为偶数的情况,将拆分式划分为两种情况:一种是式子中带1的, ...
- MongoDB 语法使用小结
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的 他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据 ...
- weblogic92 :BEA-101020
weblogic92 启动时后台出现错误:<BEA-101020> 解决方案: 1.删除临时文件: user_projects/domains/base_domain/servers/Ad ...
- [kuangbin带你飞]专题九 连通图
ID Origin Title 76 / 163 Problem A POJ 1236 Network of Schools 59 / 177 Problem B UVA 315 Ne ...