Struts2值栈

值栈由两部分组成root和Context,root中可以存放任何对象,其内部结构是一个栈,后进先出,而Context只能存放Map对象,默认Context存放了ActionContext数据中心,可以自己往Context里面添加map,栈中寻找值的原则是,先从栈顶开始找,找不到的话继续往下找,直到找到,如果要在jsp页面查看Action的值栈,可以在页面使用debuger标签,如:

可以看到Action中的值栈信息,栈中存放的默认是Action类,Context中存放数据中心

获取值栈和压入值栈的方式:

OGNL表达式在Struts2中主要用处有3方面:

1、在Struts2的拦截器中用于接收参数封装,这个是框架做的,这也是Struts引入OGNL表达式的关键原因,在接收参数封装后会创建值栈数据

2、在配置文件中使用OGNL表达式:

 

但是每次不可能写死参数值为tom,这时就可以借助值栈来实现:

 

3、在Struts2的标签中使用OGNL表达式:

 如果是从值栈的栈中获取数据,那么直接写名字获取,如果是从Context中获取的话那么需要用#进行获取:

 

 ============================================================

原文地址:https://www.cnblogs.com/javabg/p/7295476.html