SSH框架之Struts的Ognl表达式语言(2)、ValueStack对象(比较复杂,也比较重要)

问题:OgnlContext与ValueStack对象的关系?
希望大家带着这样一个问题来看这篇博客。

ValueStack对象,即值栈对象。
一、值栈对象:是整个struts数据存储的核心,或者叫中转站。

二、分析:
1、用户每次访问struts的action,都会创建一个Action对象、值栈对象、ActionContext对象。
2、然后把Action对象放入值栈中。
3、最后再把值栈对象放入request中,传入jsp页面。(key: struts.valueStack)。
4、开发者只需要通过ActionContext对象就可以访问struts的其他的关键对象。(ActionContext是给开发者用的,便于学习与使用。)

三、获取值栈对象的两种方式:

四、值栈对象的存储数据的原理:
1、ValueStack vs

2、数据

分析:

五、ValueStack存储根元素数据、非根元素数据详解
1、图示:

2、存储根元素数据:

ValueStack vs = ac.getValueStack();
/*********操作根元素的三种方法********/
//设置数据:入栈
//方式一:
//vs.getRoot().push(new User(77,"Lucy"));
//方式二:
//vs.push(new User(77,"Lucy"));//向栈顶加入元素
//vs.pop();                  //移除栈顶元素
//方式三:
//如何存储?以map结构存储  在jsp页面取数据的形式:user1.userName
vs.set("user1", new User(77,"Lucy"));
vs.set("user2", new User(777,"Lily"));

3、存储非根元素数据:

ActionContext ac = ActionContext.getContext();
/*********操作非根元素的两种方法********/
//映射数据
//#session--->{session=session_data}
//#session.session--->session_data
ac.getContextMap().put("request", "request_data");
ac.getSession().put("session", "session_data");
ac.getApplication().put("application", "application_data");

//数据存储request
Map<String,Object> map = (Map<String, Object>) ac.get("request");
map.put("request", "request_data");

六、总结在jsp页面获取根元素数据与非根元素数据取值

代码实现:

结果展示:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值