OGNL的对象栈栈map栈详解

文章转载自:http://www.itdadao.com/articles/c15a814476p0.html

OGNL只是显示数据语言 | ValueStack栈才是储存数据

这里写图片描述

详解 对象栈 root
1. 往对象栈(CompoundRoot extends ArrayList)存数据
2. ActionContext.getContext().getValueStack().push(person)//把对象person放入栈中

放入栈顶的三个方法
 一:push()的源码是通过 getRoot().add(0,person)来完成放入栈顶
 二: ValueStack:
   root: 对象栈
      index:0   person
 三: ActionContext.getContext().getValueStack().set("person",person);
把person封装成map,放入到栈顶
    ValueStack:
       root:对象栈
         index:0  Map:  key:"person" value:person
  1. ActionContext.getContext().getValueStack().add(person)//把对象person 放入栈底
ValueStack:
   root:对象栈
    index:last(最后) person
  1. ActionContext.getContext().getValueStack().add(n,person)//把对象person放在栈指定的位子
ValueStack:
   root:对象栈
    index:n person

详解 map栈
1. 通过map,request,session,application(requestMap,sessionMap,applicationMap)来存放数据

往map栈request域存数据
ServletActionContext.getRequest().setAttribute("req_a","a");

ValueStack:
   _values:Map
     key              value
     request          RequestMap
                      key      value
                     req_a       a

往map栈session域存数据
ActionConetx.getConext().getSession().put("se_a","a");
ValueStack:
   _values:Map
     key              value
     session          SessionMap
                      key          value
                     session_a       a

往map的application域存数据
ServletContext.getServletContext().setAttribute("ap_a","a");
ValueStack:
   _values:Map
     key              value
    application          ApplicationMap
                          key               value
                     application_a             a

直接往map存数据
ActionConext.getContext().put("a","a");

ValueStack:
   _values:Map
     key              value
      a                 a

总结:
ValueStack是OGNL存放数据的对象
获取ValueStack的三种方法:

ActionContext.getContext.getValueSatck();
ServletActionContext.getValueStack();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值