(Struts2)值栈(一)

统信UOS系统盘扩容保姆级教程:用GParten-分区编辑器5分钟搞定 本文提供统信UOS系统盘扩容的详细图形化教程。针对系统盘空间不足问题,重点介绍如何使用系统自带的GParten-分区编辑器,在5-10分钟内安全、直观地完成扩容操作,无需记忆复杂命令,适合所有用户快速解决存储空间告急的困扰。 阅读详情

1、什么是值栈?

      *   值栈相当于Struts2框架的数据的中转站,向值栈存入一些数据,从值栈中获取到数据。

      *   ValueStack 是 Struts2 提供的一个接口,实现类 OgnlValueStack   ---   值栈对象(OGNL是从值栈中获取数据的)

      *   Action是多例的,有一个请求,创建Action实例,创建一个ActionContext对象,代表的是Action的上下文对象,还会创建一个ValueStack对象。

      *   每个Action实例都有一个ValueStack对象(一个请求对应一个ValueStack对象)

      *   在其中保存当前Action对象和其他相关对象

      *   Struts框架把ValueStack对象保存在名为”struts.valueStack“的请求属性中,request中(值栈对象是request的一个属性)

            >   ValueStack   vs  =  (ValueStack)request.getAttribute("struts.valueStack"); 


2、值栈的内部结构

      *   值栈由两部分组成

             >  root                  ---   Struts把动作和相关对象压入 ObjectStack中  --> List

             >  context            ---   Struts把各种各样的映射关系(一些Map类型的对象)压入ContextMap中

      *   Struts会默认把下面这些映射压入ContextMap(Context)中

             注意:request代表的是Map集合的key值,value的值其实也是一个Map集合。

             >  parameter:该Map中包含当前请求的请求参数          ?name=xxx&password=111

             >  request    :该Map中包含当前request对象中的所有属性

             >  session     :该Map中包含当前session对象中的所有属性

             >  application:该Map中包含当前application对象中的所有属性

             >  attr           :该Map按照顺序来检索某个属性: request、session、application

      *   ValueStack中存在root属性(CompoundRoot)、context属性(OgnlContext)

             >  CompoundRoot 就是ArrayList

             >  OgnlContext 就是Map

      *   context 对应Map引入root 对象

             >  context中还存在request、session、application、attr、parameters 对象引用

             >  OGNL表达式访问值栈中的数据

                       *   访问root 中数据时,不需要 #

                       *   访问 request、session、application、attr、parameters 对象数据  必须写 #

             >  操作值栈  默认指的是  操作root 


3、值栈对象的创建,ValueStack 和 ActionContext 是什么关系?

      *   值栈对象是请求时创建的

      *   ActionContext 是绑定到当前的线程上,那么在每个拦截器或者Action中获取到的ActionContext是同一个

      *   ActionContext中存在一个Map集合,该Map集合和ValueStack的context是同一个地址

      *   ActionContext中可以获取到ValueStack的引用,开发的时候,使用ActionContext来获取值栈对象


4、如何获取值栈对象

      三种方法:

  >  ValueStack  vs1  = (ValueStack)  ServletActionContext.getRequest().getAttribute("struts.valueStack");

  >  ValueStack  vs2  = (ValueStack)  ServletActionContext.

                        getRequest().getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);

  >   ValueStack  vs3  =  (ValueStack)  ActionContext.getContext().getValueStack();


5、向值栈保存数据(主要针对root 栈)

      *   valueStack.push(Object  obj):

                >   push方法的底层调用root对象的push方法(把元素添加到0位置)

      *   valueStack.set(String  key,  Object  obj):

                >   源码获取Map集合(map有可能已经存在,有可能是新创建的),把map集合push到栈顶,再把数据存入到map集合中

      *   在jsp中  通过  <s:debug /> 查看值栈内容


下一篇:值栈(二)

STM32cubemx配置驱动DHT11模块 本篇文章将带大家学习使用DHT11湿温度模块,使用这个模块可以获取当前的温度和湿度数据。DHT11可以用于智能家居,蔬菜大棚等项目当中适用范围广。DHT11 是一种数字式温湿度传感器,由杜邦公司推出。它可以测量环境中的温度和湿度,并将测量结果以数字形式传输给微控制器或其他电子设备,适用于通过数字信号读取环境温湿度的应用场景。DHT11 传感器使用单总线数据交换协议,可以通过一个 I/O 引脚进行控制和数据传输。 阅读详情

相关推荐

攻克Windows平台3DGS复现:从环境配置到可视化实战全记录

本文详细记录了在Windows平台成功复现3D Gaussian Splatting(3DGS)的完整流程,涵盖从环境配置、依赖安装、数据准备到模型训练与可视化的全步骤。重点解决了Windows下CUDA版本匹配、Visual Studio编译及SIBR_viewers可视化工具部署等核心难题,为开发者提供了一份详实的避坑指南与实战手册。

weixin_28839699的博客 252

(八)Struts2进阶之值栈详解

1.什么是值栈 在Servlet中,我们都是把数据放在域对象中,然后在jsp页面中进行读取。那么在Struts2中,提供了另外一种存储机制,就是值栈,在action中把值放入值栈,在页面中进行读取。 2.action和servlet的区别 action:每次访问的时候都会创建一次。 servlet:默认在第一次访问的时候创建,在生命周期里只会创建一次。 我们创建一个LifeActio...

秃头哥编程 451

从原理图到代码:深入解析SX1278 LoRa模块与STM32的SPI通信驱动(附完整工程)

本文深入解析了SX1278 LoRa模块与STM32的SPI通信驱动实现,从硬件原理图到完整工程代码,详细介绍了LoRa技术的通信原理、寄存器配置、SPI接口设计及低功耗优化策略。适合物联网开发者和嵌入式工程师提升远距离无线通信能力,附完整工程代码助力快速开发。

weixin_42715608的博客 423

struts2值栈的奇怪现象:值栈不清空与值栈共享

这次发现是来源一个我正在开发的系统的一个现象,用户A查询之后,B进入系统,但是查询条件居然是A的。这样说可能不清楚,换句话说就是A在查询时此action的值栈会存入一些数据,但是当B进入时此值栈居然是A的值栈,而不是一个新的值栈(因为有a访问时存入的数据)。而以我的理解:每个永远会(每个线程)在访问action时,都会创建一个值栈,当请求结束(即不请求该action)值栈会清除,而且最重要的是A是A的值栈,B是B的值栈。在经过我一些列的测试之后,结果让我非常惊讶:值栈不仅不会清空,而且值栈是共用的资源。

你好小C的博客 1338

OpenEarthMap 与 xBD 数据集合并

整合好的数据:链接: https://pan.baidu.com/s/1uJ_Zg6n-s3u1D49OW52D7Q?pwd=2vwx 提取码: 2vwx完整整合步骤与代码如下。

qq_60293814的博客 1594

别再手动找触点了!EPLAN线圈触点映像的3种显示方式与F键/Ctrl+B快捷键实战

本文详细解析EPLAN线圈触点映像的3种显示方式与F键/Ctrl+B快捷键实战技巧,帮助电气设计工程师提升图纸操作效率。通过精简编号、路径栏显示和元件旁可视化三种模式的应用场景对比,结合快捷键肌肉记忆训练法,实现触点快速定位与管理,大幅减少手动查找时间。

weixin_42522964的博客 481

struts2框架值栈的概述之问题一:什么是值栈?

1. 问题一:什么是值栈? * 值栈就相当于Struts2框架的数据的中转站,向值栈存入一些数据。从值栈中获取到数据。 * ValueStack 是 struts2 提供一个接口,实现类 OgnlValueStack ---- 值栈对象 (OGNL是从值栈中获取数据的 ) * Action是多例的,有一起请求,创建Action实例,创建一个ActionContext对...

weixin_30496431的博客 165

SPSS中的数据分析—信度效度检验【1】

前一段时间跟大家分享了好几篇关于EXCEL方面的数据分析知识,不知道大家都掌握得怎么样了。今天咱们换个口味,给大家讲一下关于SPSS中的数据分析——信度效度检验。 现阶段正处在毕业季阶段,很多同学可能都正在忙着去弄自己的论文和答辩(不知道大家在翟天临上热搜这个事情上有没有做出过一定贡献),很多时候我们在写论文答辩甚至于其他课题研究的时候都会选择用问卷这种形式来收集数据。最后我们只需要针对问卷所取...

小白数据营的博客 6万+

Struts2_day03(一)认识OGNL和值栈

一、OGNL概述 1.之前web阶段,学习过EL表达式,EL表达式在jsp中获取域对象里面的值。 2.OGNL是一种表达式,功能更强大: (1)在Struts2里面操作值栈数据; (2)一般把OGNL在Struts2里面操作,和Struts2标签一起使用操作值栈。 3.OGNL不是Struts2的一部分,是单独的项目,只是经常和Struts2一起使用。 ——使用OGNL时候首先导入jar包,Struts2会提供它的jar包: 二、OGNL入门案例(记住:OGNL和Struts2标签一起使用

Fiona20的博客 166

WorldQuant Brain Alpha 生成器

一个自动化工具,通过参数优化和回测来挖掘高质量的量化交易 Alpha 因子,并自动提交符合标准的因子。

weixin_37582383的博客 1万+

在 SAP GUI Editor 中使用 OpenAI 自动生成 ABAP 代码 —— 技术实践与思考

在传统 SAP GUI Editor 场景下融入OpenAI开发者表达意图,模型负责实现。随着的持续演进,以及Joule等官方 Copilot 的加入,未来 ABAP 开发形态必将更加专注业务逻辑与架构设计,而把样板式编码交给 AI 自动完成。现在就动手试试,让你的下一段 ABAP 由 AI 来书写吧!

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 708

Struts2学习笔记(一)之 值栈

(请等待更新,谢谢...)

阿布客栈 1013

YOLOv11 改进 - 注意力机制 | 空间增强注意力SEAM(Spatially Enhanced Attention Module)提升遮挡场景检测鲁棒性

本文介绍了分离与增强注意力模块(SEAM)在YOLOv11中的结合应用。SEAM模块旨在增强面部特征学习能力,特别是处理面部遮挡问题。它采用多头注意力机制强调面部区域、抑制背景区域,第一部分使用深度可分离卷积减少参数并学习通道重要性,通过1x1卷积增强通道联系,利用两层全连接网络融合通道信息,经指数归一化后作为注意力权重与原始特征相乘。我们将SEAM集成到YOLOv11的检测头中,并进行相关注册和配置。实验表明,该方法有助于提升模型检测性能。

魔改工程师的博客 1664

通过debug过程分析Struts2什么时候将Action对象放入了值栈ValueStack中

问题提出: 1、Struts2框架在什么时候将Action对象放到了值栈ValueStack的栈顶了? 2、在哪里设置Debug断点能够最恰当的观察到这一过程? 问题解决: 2、我们知道,在值栈ValueStack中有两个逻辑部分Map栈和对象栈ObjectStack,而Action对象是被默认放在了对象栈的栈顶的(这一点我们通过<s:debug/>标签可以在页面中看...

dong4504的博客 168

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

struts2_day03_05_值栈内部结构(一)_06_值栈内部结构(二)_07_向值栈放数据三种方式

值栈内部结构 1 值栈分为两部分: 第一部分 root,结构是list集合 (1)一般操作都是root里面数据   第二部分 context,结构map集合   2 struts2里面标签 s:debug,使用这个标签可以查看值栈结构和存储值 (1)访问action,执行action的方法有返回值,配置返回值到jsp页面中,在jsp页面中使用这个标签 点击

huanglianggu的专栏 273

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

struts2_05

一、ognl概述 OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。 EL表达式在jsp页面获取域对象的值 OGNL是一种表达式,这个表达式功能更加强大 在struts2里面操作值栈数据...

LingHai_Z的博客 180

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Struts2笔记08 获取值栈对象

获取值栈的方式有多种 1.通过ActionContext类里面的方法得到值栈对象(常用方式)  每个action对象中只有一个值栈对象 2.使用ActionInvocation来获取      ActionContext ctx = actionInvocation.getInvocationContext();

Astarte的博客 247

Struts2 中的值栈的理解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33966095的博客 83

Struts2 页面取得List的大小

list在值栈里有。直接使用size()方法即可。public class ListAction { private List list ; //setter and getter public String execute() { list = service.getList(); } }

1955

Struts 校验失败 值丢失

[b]struts.xml配置 [/b][code="java"] xxxxx [/code]. 其中,struts-default包含了struts2默认的拦截器栈. [code="java"] ...

程序猿猴 268

获取值栈对象

--------------------siwuxie095 获取值栈对象 在一个 Action 中获取值栈对象的方式共有两种 方式一:使用 ActionContext 对象获取值栈对象(常用) @Overr...

weixin_30770495的博客 110

java 反射机制 在structs2_Java面试题之Struts2

1.简单的介绍一下Struts2struts2框架框架是一个按照MVC设计模式设计的WEB层框架,是在Struts1和WebWork的技术基础上进行了合并的全新的框架,其全新的Struts2的体系结构,与Struts1的体系结构差别巨大,Struts2以WebWork我为核心。采用拦截器的机制来处理用户的请求这样的设计也使得永无逻辑控制能够与ServletAPI完全脱离开2.Struts2中Act...

weixin_35953704的博客 96

struts2中的值栈的详解

简单的说:值栈是对应每一个请求对象的轻量级的内存数据的中心。在struts2中每次访问Action的时候都会创建action对象,每个action对象里面都会有一个值栈对象。在action中我们可以把数据放到值栈中,然后从页面中取值。

haha_66666的博客 2753

struts2中的值栈

一看到值栈我们应该想到的关于值栈的问题 0什么是值栈,为什么使用值栈 1 .值栈的内存结构 2.值栈的生命周期 3.如何获取值栈 4.如何向值栈中存数据,取数据 5.因为数据在值栈中,如何保存数据安全性 下面我们就根据这几个问题来看看值栈: 0.什么是值栈 在servlet中,一般处理数据我们会把数据放到request域,session,application域中,通过el表达式

jys1115的专栏 1004

struts2之值栈

文章目录1 值栈是什么2 值栈能干什么3 值栈有什么?3.1 狭义值栈3.2 广义值栈3.3 关于广义和狭义4 值栈的基本使用4.1 如何获取ActionContext4.2 获取过后,如何使用4.3 ValueStack的基本使用4.3.1 如何获取4.3.2 如何使用4.3.3 应用示例 1 值栈是什么 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心 Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action、Result、Interceptor等Struts2的

上善若泪 529

【Struts2笔记整理七】值栈

值栈(ValueStack) 在 Struts2 中也是非常重要的知识,它其实类似于一个数据中转站,Struts2 框架中的所有数据都保存到了 ValueStack 中。ValueStack 贯穿整个 Action 的生命周期,只要 Action 一创建,Struts2 就会创建一个 ValueStack 对象。

小异常的博客 552
上一篇: (Struts2)OGNL表达式的概述
下一篇: (Struts2)值栈(二)
Jadan-Z
博客等级 码龄10年 8粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值