zoukankan      html  css  js  c++  java
  • 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    )

  • 相关阅读:
    deeplearning.ai 卷积神经网络 Week 1 卷积神经网络
    deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II
    deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I
    deeplearning.ai 改善深层神经网络 week3 超参数调试、Batch Normalization和程序框架
    deeplearning.ai 改善深层神经网络 week2 优化算法
    deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面
    cs231n spring 2017 lecture8 Deep Learning Networks
    cs231n spring 2017 lecture7 Training Neural Networks II
    cs231n spring 2017 lecture6 Training Neural Networks I
    cs231n spring 2017 Python/Numpy基础
  • 原文地址:https://www.cnblogs.com/JohnsonLiu/p/9081299.html
Copyright © 2011-2022 走看看