struts2值栈分析
来源:互联网 发布:excel提取单元格数据 编辑:程序博客网 时间:2024/06/07 10:34
struts2值栈分析
前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易。
struts2中利用值栈来存储数据,在struts2中,把数据存在值栈中,然后在jsp页面用ognl表达式取出。
在struts2中的action有三种方法获取值栈
ValueStack valueStack=ActionContext.getContext().getValueStack();ValueStack valueStack=(ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack");ValueStack valueStack=ServletActionContext.getValueStack(ServletActionContext.getRequest());
可以看到我们可以利用request来获取值栈,而request的生命周期为一次请求,所以值栈的生命周期也为一次请求。
ValueStack 是一个接口,它的实现类是ognlvalueStack。
在valueStack中有两个数据结构,一个名字为context,另一个为root。
context的类型是OgnlContext,OnglContext实现了Map接口,所以context本质上是一个Map。
valueStack中的另一个数据结构root,它的类型是CompoundRoot,CompoundRoot继承了ArrayList类,所以它本质上是一个ArrayList,我们称它为对象栈。
map栈中有一个名称为_values的对象,它是一个HashMap,在这里存放了request,response,session,application等servlet容器的内容,我们称它为map栈。
map栈中还有一个名称为_root的对象,它和我们上面说的valueStack中的另一个数据结构root相同,都是对象栈,为什么valueStack中会有两个对象栈呢,这是因为struts2继承了以前一些框架的内容导致的。
对象栈中保存了两个对象,一个是ValueStackAction,它代表的是当前请求的Action,
另一个是DefaultTextProvider,它是用于struts2国际化的。
我手动用一个粗糙的涂鸦图解下:
所以在jsp页面中,如果要输出的内容在对象栈中,直接指定属性名字,如果在map栈中,要用#来指定
例如
String name=
"aaa"
;
String Bname=
"bbb"
;
ActionContext.getContext().getValueStack().push(name);
//把字符串放入对象栈中
ActionContext.getContext().put(
"Bname"
, Bname);
//把字符串放入map栈中
在jsp页面中取出的对应的值:
<s:property value="name"/><s:property value="#Bname"/>
有错误请指出
- Struts2值栈分析
- struts2值栈分析
- Struts2值栈分析
- struts2值栈分析与接收封装参数原理
- struts2 分析
- struts2 分析
- struts2 分析
- struts2 分析
- struts2 分析
- Struts2默认拦截器栈分析
- Struts2之struts2源码分析
- 通过debug过程分析Struts2什么时候将Action对象放入了值栈ValueStack中
- 通过debug过程分析Struts2什么时候将Action对象放入了值栈ValueStack中
- struts2源码分析 serviceAction
- struts2.0分析
- Struts2源码分析
- struts2错误分析
- Struts2应用分析
- 20170204老男孩用过的一些运维软件
- U盘中毒后,怎么恢复被隐藏的文件
- SqlServer 监控数据库中各个表的数据条数
- APP生产和开发环境的分离
- Git打标签tag
- struts2值栈分析
- (斯坦福机器学习笔记)支持向量机
- 【video】流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)
- 咖啡知识大全
- AsyncTask异步任务
- opencv学习之直方图绘制
- nginx监听相同端口,根据域名请求不同的server
- 微信小程序上手篇(1)
- 机器学习笔记(四)决策树