(Struts2)值栈(一)

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能 阅读详情

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 /> 查看值栈内容


下一篇:值栈(二)

prometheus普罗米修斯集监控外部k8s 阅读详情

相关推荐

冒泡排序的并行计算

本人也是并行计算的小白,在这里记录下自己的学习笔记。 今天做了一下冒泡排序的并行计算比较: 串行冒泡排序如下: #include <stdio.h> #include <stdlib.h> #include <windows.h> void BubbleSort(int * pData, int nSize) { if (!pData) { ...

gaoyi的专栏 4490

(八)Struts2进阶之值栈详解

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

秃头哥编程 451

灰度发布、蓝绿部署、双活架构与数据同步/备份/迁移

本文系统介绍了现代互联网系统的核心部署策略与数据管理技术体系。主要内容包括:1)三种服务发布策略(灰度发布、蓝绿发布、滚动发布)的原理、实现方式和适用场景对比;2)高可用架构设计(同城双活、异地双活、异地多活)的技术方案;3)数据同步机制、备份策略与迁移方案的设计要点。文章通过架构图、流程图和配置示例详细展示了各类技术的实施方法,并分析了不同方案的优劣及风险控制措施,为构建高可用、高可靠的分布式系统提供了完整的技术指南。

zane的博客 515

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

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

你好小C的博客 1338

火山引擎之火山方舟知识库+OpenWebUI,搭建独属于自己的AI智能客服

创建接入点,接入点名称可按个人需求而定,比如Doubao-1.5-pro-32k,在添加模型选择Doubao-1.5-pro-32k,点击确定(PS:有些模型不支持知识库,若发现后续无法选择,请重新创建推理接入点。选择应用广场,创建零代码应用,在创建好的应用设置内编辑相关信息,并选择推理接入点,即先前建好的推理接入点;此处的模型名称是火山的模型ID名称,可在OpenWebUI设置-模型 中修改名称。至此所需的apikey和模型ID和请求的api地址(可选配置,非本文重点参数)。进入火山官网,注册账号。

AmaZInGvCH的博客 2651

MoveIt2项目想换掉KDL求解器?试试这个trac_ik插件(附源码编译避坑指南)

本文详细介绍了如何在MoveIt2项目中用trac_ik插件替代KDL求解器,提升机械臂运动学求解的效率和成功率。内容涵盖环境准备、源码编译避坑、项目集成及性能调优,特别适合需要高精度控制的协作机械臂应用场景。通过实测数据对比,trac_ik在求解时间和奇异点处理上显著优于传统KDL求解器。

weixin_30730053的博客 694

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

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

weixin_30496431的博客 165

智能体在车联网中的应用:一份详尽到每日的100天学习路线图

这100天的旅程,是一次对毅力、学习方法和工程实践能力的综合考验。它不仅关乎掌握一系列技术点,更关乎培养解决复杂系统性问题的思维模式——将宏观的交通需求分解为微观的智能体决策,再通过多智能体协同涌现出宏观的智能行为。当你完成这份大纲时,你将拥有的不仅是一个项目作品集,更是一套应对“智能体+车联网”乃至更广泛AI+垂直领域挑战的方法论。未来已来,期待你成为构建智能交通新生态的关键贡献者。

IT深耕十余载,大道之简 1332

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

通达信【雷霆尊者排序】实战指南:高胜率竞价指标解析与优化策略

本文详细解析了通达信【雷霆尊者排序】指标在集合竞价阶段的应用,提供从基础设置到实战解码的完整指南。文章重点剖析了‘雷霆’、‘使者’、‘精选’等核心信号的逻辑与共振策略,并分享了如何结合K线、市场情绪进行综合研判与风险控制,旨在帮助短线交易者提升早盘选股效率与胜率。

pear55的博客 950

LLM的MCP协议:初识MCP,搭建第一个MCP Server

MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。

Criss@陈磊 2万+

Struts2学习笔记(一)之 值栈

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

阿布客栈 1013

使用 Python 构建 Reddit 热帖爬虫:抓取热门讨论帖和评论

在现代互联网中,Reddit 被誉为全球最大、最活跃的讨论平台之一,汇聚了各种主题的帖子、评论和社交互动。因此,抓取 Reddit 上的热门帖子和评论可以为我们提供一个丰富的文本数据源,可以用于情感分析、话题建模、趋势分析等应用。Reddit 提供了官方的 API,可以让开发者获取包括帖子、评论、用户信息等在内的各种数据。我们可以结合上述方法,抓取多个热门帖子,并将每个帖子的标题、作者、发布时间和评论内容保存到一个数据结构中。每个帖子的对象包含了丰富的信息,如标题、内容、发布时间、作者等。

2201_76125261的博客 382

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

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

dong4504的博客 168

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

huanglianggu的专栏 273

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

struts2_05

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

LingHai_Z的博客 180

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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、付费专栏及课程。

余额充值