• set和push方法压入栈顶的值获取方法


    向值栈里面放数据(储存的位置在root域里面)

    向值栈放数据有多种方式,往往我们只用其中一种

    1.set方法压栈

        1)在Action中获取值栈对象,使用set()方法向值栈存放数据

            ActionContext.getContext().getValueStack().set("key","value");

        2)在jsp中获取值栈数据,根据set方法的名称(key)获取

            <s:property value="key"></s:property>

    2.push方法压栈

        1)在Action中获取值栈对象,使用push()方法向值栈存放数据,push方法只有设置的值(value),没有名称(key)

             ActionContext.getContext().getValueStack().push("XXX");

        2)push()方法会把值栈中存放的数据存到top数组中,push的取值方法有点特殊,是通过直接把栈顶元素取出来的。

        3)在jsp中获取push方法设置的值,根据top数组获取值

            <s:property value="[0].tap"></s:property>//这里的top是root的域实体对象名称,也就是List对象的名称

    3.在action定义变量,生成变量的get方法

    向值栈中放对象

    实现步骤:

    第一步:定义对象变量

    第二步:生成变量的get方法

    第三步:在执行的方法里面向对象中设置值

    向值栈中放List对象

    第一步:定义List集合变量

    第二步:生成变量的get方法

    第三步:在执行的方法里面向List集合设置值

    4.扩展

        值栈:在struts2里面提供了本身的一种存储机制,类似于域对象,是值栈,可以存值和取值。

            

    servlet和action的区别:

            Servlet:默认在第一次访问的时候创建,只创建一次,是一个单例对象!!

            Action:一样是访问的时候创建对象,每次访问action的时候都会创建新的action对象,创建多次,是一个多实例对象!!

            

    值栈的存储位置:

    • 每次访问action的时候都会创建action对象。
    • 在每个action对象里面都会有一个值栈对象。(注意:每个action对象只有一个)(在同一个action值栈只有一个)

        

    获取值栈对象有多种方式!

    • 常用的方式:使用ActionContext对象里面的方法(getValueStack())获取值栈对象。

        

       值栈内部结构

        栈:先进后出!

        最上面是栈顶的元素,向栈里面放数据的操作叫做压栈。

        值栈分为两个部分,root和context

        root专业叫做ObjectStack(对象栈) 
       context专业叫做ContextMap(Map栈),Map类型的栈。(在我们访问里面的对象的时候,会通过出栈的方式取东西,效率比较低,一般我们不会用)

        root结构是List集合

        context结构是Map集合

        (要想查看到值栈的结构可以用调试(debug)的方法,通过struts2的标签<s:debug></s:debug>,值栈确实分为两个部分,一个root,一个context    )

  • 相关阅读:
    干草金字塔
    ⑨的完美搭积木
    门(door)
    ⑨的完美冻青蛙(frog)
    An overnight dance in discotheque
    逃跑(escape)
    BZOJ4390: [Usaco2015 dec]Max Flow
    BZOJ3732: Network
    BZOJ1121: [POI2008]激光发射器SZK
    BZOJ3713: [PA2014]Iloczyn
  • 原文地址:https://www.cnblogs.com/JohnsonLiu/p/9081299.html
Copyright © 2020-2023  润新知