com.opensymphony.xwork2.dispatcher.HttpServletRequest application com.opensymphony.xwork2.dispatcher.HttpServletResponse com.opensymphony.xwork2.ActionContext.name com.opensymphony.xwork2.ActionContext.application attr com.opensymphony.xwork2.ActionC…
1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ValueStack: I. 可以从 ActionContext 中获取值栈对象II. 值栈分为两个逻辑部分                   > Map 栈: 实际上是 OgnlContext 类型, 是个 Map, 也是对 ActionContext 的一个引用. 里边保存着各种 Map: …
前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据,在struts2中,把数据存在值栈中,然后在jsp页面用ognl表达式取出. 在struts2中的action有三种方法获取值栈 ValueStack valueStack=ActionContext.getContext().getValueStack(); ValueStack valueSta…
一.前言 很多事儿啊,就是“成也萧何败也萧何”,细想一些事儿心中有感,当然,感慨和本文毛关系都没有~想起之前有篇Struts2中值栈的博客还未完工,就着心中的波澜,狂咽一把~ 二.正文 博文基于:struts-core-2.5.2.jar,ognl-3.1.10.jar 和值栈的邂逅还是大学学习Struts2的时候,老师当时在台上津津有味,我却在底下晕头转向~很长时间都没有去理清这个值栈到底是什么,实现原理是什么,偶然的际遇,让我又遇到了它,所以我决定以我现有的知识储备再次去追根溯源~ 那从概念…
目录 一.值栈分为两个逻辑部分 二.Struts2 利用 s:property 标签和 OGNL表达式来读取值栈中的属性值 1.值栈中的属性值: 2.读取对象栈中对象的属性: 3.默认情况下,Action 对象会被 Struts2 自动的放到值栈的栈顶 4.通过例子,直观ValueStack(对象栈) 5.使用 获取map栈里面的值 三.ongl表达式读取静态字段或方法(了解) 一.值栈分为两个逻辑部分 1 Map 栈: 实际上是 OgnlContext 类型, 是个 Map, 也是对 Acti…
值栈是struts2内部一片很重要的区域,我在初学的时候,发现对于值栈这个数据结构的理解不是很深刻.例如OGNLContext是什么,ActionContext和值栈有什么关系.为什么ActionContext可以获得值栈和contextMap等等,这些都是在我初学的时候的难以理解的概念性问题.我在网上查找了很多资料,发现网上对于这一概念的解释很多都是复制粘贴或者解释的不是很清楚,因此写一篇博文帮助和我一样对于struts2值栈内部的数据结构的引用不清楚的童鞋!首先看看值栈的数据结构: 可以看出…
1.获取值栈 //获取值栈的第一种方式 ValueStack valueStack1 = (ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack"); //获取值栈的第二种方式 ValueStack valueStack2 = ActionContext.getContext().getValueStack(); System.out.println(valueStack1); Sys…
1. 关于值栈: 1). helloWorld 时, ${productName} 读取 productName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的.  2). ValueStack:  I.  可以从 ActionContext 中获取值栈对象 II. 值栈分为两个逻辑部分 > Map 栈: 实际上是 OgnlContext 类型, 是个 Map, 也是对 ActionContext 的一个引用. 里边保存着各种 Map:         request…
一:什么是值栈:struts2里面本身提供的一种存储机制,类似于域对象,值栈,可以存值和取值 特点:先进后出,最上面的元素叫做栈顶,也叫压栈. <s:debug></s:debug>可以看到栈的元素,栈的结构为root和context,root返回的结构是list集合,context返回的是map集合 二:action和servlet区别: 每次访问的action的时候,都会创建一个新的action对象,而servlet只会创建一个对象 注意:每次访问action都会创建一个act…
1.ValueStack贯穿整个 Action 的生命周期,保存在request域中,所以ValueStack和request的生命周期一样.当Struts2接受一个请求时,会迅速创建ActionContext, ValueStack,action.然后把action存放进ValueStack,所以action的实例变量可以被OGNL访问. 请求来的时候,action.ValueStack的生命开始,请求结束,action.    ValueStack的生命结束: 2.action是多例的,和S…