Struts2 值栈总结(ValueStack)

1、获取值栈

1 //获取值栈的第一种方式
2         ValueStack valueStack1 = (ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack");
3         //获取值栈的第二种方式
4         ValueStack valueStack2 = ActionContext.getContext().getValueStack();
5         System.out.println(valueStack1);
6         System.out.println(valueStack2);

2、值栈包括两部分:root栈和map栈

  1、root栈:继承了List接口,又称之为对象栈

  2、map栈:实现了Map接口,又可以称之为上下文栈(context)

3、Root栈的存值和取值

  1、存值(先进后出)

 1 1、Push压栈   (获取值栈)
 2     valueStack.push("zhangsan");
 3 2、set 压入栈顶 (键值对形式)
 4     //set:创建一个map集合,将数据存入该集合中,最终将map集合压入root栈栈顶
 5     valueStack2.set("name","wangwu");
 6 3、使用成员变量方式
 7     private String name = "maliu";
 8
 9     public String getName() {
10     return name;
11     }

  2、取值

1、Push 取值
    <!--
        通过s:property标签获取数据
        value:是一个ognl表达式,通过valu值可以到值栈中去查询对应的数据
        [0].top:表示获取root栈栈顶的数据
    -->
    获取栈顶数据:<s:property value="[0].top"/><br>
    获取栈顶数据:<s:property/><br>
2、set 取值 Or 成员变量方式存值
        <%--
        如果栈顶是map集合:通过集合的key可以直接获取value值
        通过name到值栈中从上往下进行查找,找到的第一个进行返回
     --%>
     获取栈顶map中的数据:<s:property value="name"/><br>

3、Map栈的存值和取值

  1、存值 or 取值(表示直接从map栈查找,而不是从root栈栈顶开始从上往下查找。)

 1 1、Put 方法存值
 2     //将数据存入map栈
 3     //由于map栈本质就是一个集合,因此存储方式和map一样
 4     ActionContext.getContext().put("name", "tianqi");
 5 2、取值
 6     <%--
 7     从map栈获取数据:在ognl表达式中使用#表示直接从map栈查找数据
 8      --%>
 9
10     获取map栈中的数据:<s:property value="#name"/>

4、%主要作用是控制解析或者不解析

   1 “%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表 达式,就比如:<s:textfield value=”%{username}”>。 也可在OGNL表达式中,添加%{‘ ’}或者’’,来让其变成普通 2 字符串而不解析,比如:<s:property value=”%{‘username}’”> 3 4   简单的说:%表达式的作用是,可以让字符串变成支持ognl表达式的解析,也可以让解析的表达式变成字符串,

5、$号的使用

  $主要作用是在相关配置文件中引入OGNL表达式,让其在配置文件中也能解析OGNL表达式。(换句话说:$用于在配置文件中获取值栈的值用的。)

时间: 2024-10-24 13:33:51

Struts2 值栈总结(ValueStack)的相关文章

struts2值栈ValueStack中都有哪些东西?

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

(十)Struts2 值栈/OGNL

值栈是一组对象,按照提供的顺序存储以下这些对象: 序号 对象和说明 1 Temporary对象 实际中存在各种在页面执行期间创建的temporary对象.例如,JSP标签循环集合的当前迭代值. 2 Model对象 如果在struts应用程序中使用Model对象,则当前Model对象放在值堆栈上的action之前. 3 Action对象 这是指正在执行的当前action对象. 4 命名对象 这些对象包括#application,#session,#request,#attr和#parameters

如何自学Struts2之Struts2值栈和OGNL语言[视频]

如何自学Struts2之Struts2值栈和OGNL语言[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95

struts2中的值栈对象ValueStack

ValueStack, 即值栈对象. 值栈对象: 是整个struts数据存储的核心,或者叫中转站. 用户每次访问struts的action,都会创建一个Action对象.值栈对象.ActionContext对象:  然后把Action对象放入值栈中: 最后再把值栈对象放入request中,传入jsp页面. (key: struts.valueStack):     开发者只需要通过ActionContext对象就可以访问struts的其他的关键对象. (ActionContext是给开发者用的,

struts2值栈存取数据小结(使用ognl表达式)

前言:使用ognl和struts2标签库的时候要在 jsp页面 中 加入这么一行 <%@ taglib uri="/struts-tags" prefix="s" %> struts(统一格式): <action name="ognl" class="com.demo.test1.OnglAction" method="ognl1"> <result name="og

struts2值栈分析

前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据,在struts2中,把数据存在值栈中,然后在jsp页面用ognl表达式取出. 在struts2中的action有三种方法获取值栈 ValueStack valueStack=ActionContext.getContext().getValueStack(); ValueStack valueSta

Ognl表达式 值栈对象ValueStack

ValueStack值栈主要包含另个部分: 1.map栈(非根元素) context:主要存储域对象. 2.list栈(根元素) root:主要存储 (1)通过值栈的push()方法存放的对象 (2)Map对象(通过值栈的set()方法存放的数据) (3)Action对象 (4)其他代理对象. 测试类OgnlDemo2 <span style="font-size:14px;"><span style="font-family:Courier New;&qu

struts2 值栈的理解

之前工作中当遇到JSP在struts2取值的时候,对于# % 什么的使用一直处于不太明白的状态(虽然之前学习struts2的时候有学到过). 今天再次遇到,整理一下. struts2上下文如上图所示.其中值栈里的内容我们经常用到的主要就是当前action的属性值.可以用s:debug标签看到. 对于在JSP里取值栈里的值:<s:property value="artist.bio" /> 值栈里的值是可以“升级”的,使用的是set标签,其中可以用scope指明要升级到的范围

struts2 ValueStack(值栈)解析

Struts2一个重要点就是值栈. ValueStack,是用来存储一些在各个action,或者说是通过s标签.el表达式等给前台Jsp等页面展示的东西. ValueStack是一个接口,其内部接口非常简单: 1 /* 2 * Copyright 2002-2007,2009 The Apache Software Foundation. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5