公司怎样制作网站,成都建设网站 scgckj,淘宝客网站根目录,小制作手工简单又漂亮【ValueStack和ActionContext的关系】首先#xff0c;从结构上来看ValueStack是ActionContext的一个组成部分#xff0c;是对ActionContext功能的扩展。ActionContext是一个容器结构#xff0c;是Struts2中用于数据存储的的场所#xff0c;而ValueStack则是一个具备表达式引… 【ValueStack和ActionContext的关系】 首先从结构上来看ValueStack是ActionContext的一个组成部分是对ActionContext功能的扩展。ActionContext是一个容器结构是Struts2中用于数据存储的的场所而ValueStack则是一个具备表达式引擎能力的数据结构提供了一个可以进行表达式引擎的计算场所。Struts2将ValueStack置于ActionContext目的是为静态的数据添加动态的计算能力。以下也是ValueStack和ActionContext的包含关系。【ValueStack的结构】 ValueStack是XWork用以对Ognl计算进行扩展的一个特殊的数据结构ValueStack从数据结构的角度被定义为一组对象的集合在进行Ognl计算时都被视作root对象而Ognl是不支持多个root对象。ValueStack中的数据分两个部分存放root对象栈和context一个map结构: ValueStack有两部分组成Context和root获取两个对象的方法如下 1、向Context中存取对象的方法 1ActionContext.getContext() .put(key,value); .get(key); (2)ActionContext.getContext().getValueStack() .put(key,value); .get(key); 2、向stack中存取对象的方法 ActionContext.getContext().getValueStack() .push(); .pop(); 另外还要注意一点的是ognl表达式访问request、session等作用域的对象前面要加#如#request.user访问request作用域的user对象其原因也很容易理解因为request、session等对象被封装到了ValueStack的Context中Context是一个Map结构访问Context中的内容是要加#。 转载于:https://blog.51cto.com/745761505/1537611