值栈(重要)和ognl表达式
1、 只要是一个mvc框架,必须解决数据的存和取的问题
2、 Struts2利用值栈来存数据,所以值栈是一个存储数据的内存结构
3、 把数据存在值栈中,在页面上利用ognl表达式显示出来
讨论的问题
1、 讨论值栈的生命周期
2、 值栈的内存结构
3、 通过什么样的方法把数据放入到值栈中
4、 显示出来
值栈的内存结构
获取值栈的路径
说明:
1、 值是一样的,说明只有一个对象
2、 因为有一种是从request域中获取的,所以是一次请求
内存结构
1、 大致图:
2、 上面图中的context的放大
说明:
_root:(CompoundRoot)
_values:(HashMap)
在这里存放了request,response,session,application等servlet容器的内容
3、_root的放大
说明:
和ValueStack中的root是一致的
值栈的内存总图
说明:
从上图中可以看出valueStack总共分为两个部分:
对象栈:root
Map栈:_values
对象栈的存放
1、 Push方法
2、 add方法
对象栈的提取
从上图中可以看出,peek方法为获取对象栈的栈顶的元素
对象栈的元素的弹出*(栈顶的数据弹出)
作对象栈中的对象
说明:
可以利用valueStack.setParameter方法改变对象栈中对象的属性的值