文章转载自: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
- ActionContext.getContext().getValueStack().add(person)//把对象person 放入栈底
ValueStack:
root:对象栈
index:last(最后) person
- 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();