struts2 值栈浅析
来源:互联网 发布:淘宝男士服装 编辑:程序博客网 时间:2024/06/05 17:03
用过struts2的都知道,我们在前台页面的参数,只要与我们后台的属性名称相同,当我们请求道后台时,我们前台的值是能传递到后台的,那么我们后台究竟是从哪里获取到的值呢?难道是我们的requets等域里面?答案是否定的,这里就涉及到了我们sturts2的值栈。我们后台的属性参数的值都是从值栈中获取的。
我们的值栈呢,本质上是ActionContext,而我们的ActionContext是对OgnlContext的包装,OgnlContext把前台传过来的值封装在一个Map中,所以我们的属性相当于就是Map的key值,只要我们的key值匹配上了,就能获取到相应的值,这就是后台取值的原理。下面是值栈的一些基本原理,源于我对值栈的一些简单理解,如有不对,还请包涵。
ValueStack(值栈):ValueStack贯穿整个Action的生命周期(一个请求一个Action),每个Action的实例对象都有一个ValueStack对象,ValueStack相当于一个数据中转站,在其中保存当前Aciton对象和一些其他相关对象。ValueStack大致可以分为两部分Map栈+对象栈。
Map栈:ContextMap即OgnlContext,struts2把各种各样的映射关系压入ContextMap中,实际上是对ActionContext的一个引用,是一个Map,其中包括:
parameters:该Map中包含当前请求的请求参数。
request:该Map中包含当前request对象中的所有属性。
session:该Map中包含当前session对象中的所有属性。
application:该Map中包含当前application对象中的所有属性。
所以我们的Ognl表达式取值可以通过request.属性名的方式取到对应的值
对象栈:CompoundRoot(ObjectStack),所有参数都是从中匹配取值,取值顺序是先进后出,是一个ArrayList定义的栈,里面存放着各种和当前Action实例相关的对象,是一个数据结构的栈。
- struts2 值栈浅析
- struts2浅析
- Struts2 浅析 Servlet 与 Struts2
- Struts2源码浅析-Container
- Struts2源码浅析-初始化
- Struts2源码浅析-ConfigurationProvider
- Struts2源码浅析-ResultType
- struts2 工作原理浅析
- Struts2 原理浅析
- struts2知识点浅析
- Struts2--拦截器浅析
- 浅析struts2的国际化
- 浅析struts2中的验证
- struts2浅析1
- Struts2拦截器浅析
- Struts2源码浅析-ConfigurationProvider
- Struts2-Value Stack浅析
- struts2框架浅析
- C# MYbank ----------------------- 终级项目
- ButterKnife的使用、简化FindViewById
- usaco ★Zero Sum 和为零
- JS+CSS简易Tab效果
- 一档First Gear
- struts2 值栈浅析
- 邻接矩阵的深度优先遍历(递归以及非递归),广度优先遍历
- Atitit 多继承实现解决方案 java c#
- Java重要知识点(继承、多态、接口,异常,工具,测试)
- PHP格式化字符串
- 银行家算法java
- 将coco2dx工程导入Android studio中
- 邻接表的深度优先遍历以及广度优先遍历
- Java反射机制