zoukankan      html  css  js  c++  java
  • 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表达式。(换句话说:$用于在配置文件中获取值栈的值用的。)

  • 相关阅读:
    Codevs 2296 仪仗队 2008年省队选拔赛山东
    Codevs 1535 封锁阳光大学
    Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
    Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
    Codevs 1684 垃圾陷阱
    洛谷 P1108 低价购买
    Vijos P1325桐桐的糖果计划
    Codevs 3289 花匠 2013年NOIP全国联赛提高组
    Codevs 2611 观光旅游(floyed最小环)
    C语言基础之彩色版C语言(内含linux)
  • 原文地址:https://www.cnblogs.com/RedHat-Linux/p/7932078.html
Copyright © 2011-2022 走看看