关于struts2中直接操作作用域和操作值栈的对比以及值栈的理解

STRUTS2获得作用域、参数响应对象及三种符号说明 RequestMap,SessionMap,ApplicationMap, AttributeMap. struts提供两种方式访问session,request ,response,ActionContext 使用。 获得作用域及参数响应对象及三种符号说明 立即下载

 注:参考文章:https://www.cnblogs.com/bamaw/p/7259232.html

 自从初学struts2框架以来,时常和值栈打交道。

值栈究竟是什么,对于我们使用者来说值栈是一个非常方便的东西,很形象的可以称其为“数据中转站”。

为什么会有这种叫法呢,因为我们用struts2框架对数据进行操作时,我们会向值栈存入一些数据,再从值栈中取出一些数据并进行操作。

但是,在struts2框架这个重量级框架中,其实我们的数据都是会一式三分,总会有一份放入作用域中,所以为什么我们不直接操作作用域呢?这样不是更加容易上手吗?

对于框架而言,我们要使用他,我们就需要遵守他的标准,我们既然使用了struts2框架,我们就需要遵守他的规范。在struts2框架中,我们可以在Action中通过定义同名成员变量来自动的获取存在值栈中的值,这样我们就很方便的省去了操作作用域的一段代码。

而每个Action实例都会对应一个值栈(一个请求对应一个ValueStack对象),也就是说,我们在接受一个action请求的时候,我们会通过核心过滤器首先创建一个ActionContext对象,伴随着创建一个ValueStack对象(具体流程可以自行参看源码),由OgnlValueStack实现类实现。这样看来action实例和值栈几乎是生命周期同步的,即一个请求对应一个action对应一个值栈。

那么,拓展一下,我们在接受请求时创建的值栈是放在哪里的呢?

不难联想到,应该是放在request中的。struts2框架会把值栈对象保存在“struts.valueStack”的请求属性中,也就是说,值栈对象是request的一个属性。

所以我们创建值栈对象时候的手段就会多样化一些,当然最常用的还是:

ActionContext.getContext().getValueStack();

下面两种仅需要了解:

ServletActionContext.getRequest().getAttribute("struts.valueStack");

ServletActionContext.getRequest().getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);

当然,很明显这两种方法是与Servlet耦合的,所以不推荐使用。

文章主要用于梳理自身知识,如有侵权联系删除。


Macbook Pro Bootcamp 安装触控板驱动mac-precision-touchpad在Windows系统下实现更好的触控板操作 由于很多软件的限制,所以不得不在Windows和MacOS之间进行切换,然而,Windows下虽然Bootcamp提供了触控板的驱动,然而只能实现简单的上下滑动和点击等操作,而且在滑动页面的时候滑动非常不流畅,体验极差。 今天无意间发现了一款第三方撰写的驱动,可以较为完美地实现Macbook笔记本在Windows系统下的触控板操作支持,通过在我的2015款Macbook Pro(A1502)进行安装测试,感觉体验很不错,在这里分享给大家。 驱动来自于Github上的imbushu,他的项目地址如下: htt 阅读详情

相关推荐

Altium Concord Pro 的应用范围,安装,和使用范围

Altium Concord Pro 的应用范围,安装,和使用范围。保证满足两者软件的最低安装要求。 Altium Concord Pro 是配合Digapcb,和MCAD,Altium 和相应机械设计软件的基础和交换桥梁

hanzhaos的博客 1120

struts2中获取作用域的2种方式,RequestAware

Servlet中有三大作用域: request : 作用于一次请求, session:作用于一个浏览器中,在浏览器不关闭的情况下多次响应都有效 servletContext(application):作用于一个web应用中,在整个程序中都有效,因其作用范围太大所以在开发中用的很少。 那么在struts2中如何获取这三个作用域呢? 有两种方式: 1. 使用ServletActionContext获取...

Java开发,人工智能,边缘计算,致力于掌握前沿技术 896

Memory SystemsCache, DRAM, Disk翻译学习DRAM部分(二)

DRAM 的发展史

qq_33473931的博客 995

STRUTS2获得作用域、参数、响应对象简单说明

在struts1中,获得到系统的request或者session对象非常方便,都是按照形参传递的,但是在struts2中,request和session等都被隐藏了 主要使用的类:RequestMap,SessionMap,ApplicationMap, AttributeMap(可以获得所有作用域值), 接口:requestAware,ServletRequestAware,SessionA...

wanyu_937 166

ArcGIS License Server点击启动没反应,许可管理器无法启动怎么办

4 当我们再打开ArcGIS License Server Administrator的时候。3 在【服务】中找到【ArcGIS License Manager】双击。无法启动ArcGIS License Server的情况。在使用ArcGIS的过程中,我们经常会遇到。专注GIS领域知识分享,交流行业软件技巧。欢迎关注,不定期分享GIS各种问题和技巧。1 右击我的电脑——【管理】服务状态——启动,确定即可。启动类型选择——自动。

GIS蒲公英的博客 2万+

Python多进程实战:用BaoStock高效下载股票历史数据的5个优化技巧

本文详细介绍了使用Python多进程技术通过BaoStock高效下载股票历史数据的5个优化技巧。从理解BaoStock的数据获取机制到进程池配置、智能任务分片、异常处理及性能监控,帮助开发者显著提升数据下载效率,特别适合量化交易领域的数据采集需求。

weixin_30369041的博客 455

STRUTS2 作用域、参数、响应对象

 转载:http://blog.youkuaiyun.com/wangyu937/archive/2010/04/25/5527570.aspx 在struts1中,获得到系统的request或者session对象非常方便,都是按照形参传递的,但是在struts2中,request和session等都被隐藏了主要使用的类:RequestMap,SessionMap,ApplicationMap

lillllllll的专栏 5491

AD创建属于自己的元件库(详细)

我今天开始学习AD2022,但是我想自己创建属于自己的元件库,但是奈何找了好多教程就是随便几句话就把我打发走了,弄了一天都没搞定(也许是我比较菜),所以现在乱懂了,自己写一个属于我们自己小白的教程,希望有用吧哈哈我比较偷懒,直接使用嘉立创上画好的元件导入,和我们自己创建自己画的步骤其实都一样。

qq_33591173的博客 2万+

struts2中的值栈的详解

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

haha_66666的博客 2753

安卓刷Windows太难?这款手机平板双系统刷机工具,小白也能轻松拿捏!(小白福音!手机平板专用,一键搞定安卓刷 Windows 双系统!)

安卓刷Windows太难?这款手机平板双系统刷机工具,小白也能轻松拿捏!(小白福音!手机平板专用,一键搞定安卓刷 Windows 双系统!)

XiaoqiangClub的博客 4669

基于FPGA的UDP 通信(一)

手头的FPGA开发板上有一个千兆网口,最近准备做一下以太网通信的内容。本文先介绍基本的理论知识。 FPGA芯片型号:xc7a35tfgg484-2 网口芯片:RTL8211 网络接口:RJ45

记录所学,分享知识,结识挚友 8358

Struts2中的值栈

值栈 什么是值栈 域对象在一定的范围内,存值和取值 在Struts2里面提供本身一种存储机制,类似于域对象,是值栈。可以存值和取值 在action里面把数据放到值栈里面,在页面中获取值栈数据 值栈存储位置 (servlet 和 action 区别: servlet 默认在第一次访问时创建,创建一次 action 访问时创建,每次访问action时,都会创建actio

废铁的博客 338

基于C++和Basler SDK的相机开发详解

Basler相机是德国Basler公司生产的高性能工业相机,具有高分辨率、高帧率和低噪声的特点。Basler相机广泛应用于机器视觉、工业自动化、医疗影像和安防监控等领域。高分辨率和高帧率:能够捕捉清晰、细腻的图像。多种接口:支持USB、GigE、Camera Link等多种接口,方便不同应用场景的需求。丰富的配置选项:支持多种图像格式、分辨率和帧率的配置,适应不同的应用需求。本文详细介绍了如何基于C++和Basler SDK进行相机开发,涵盖了从环境搭建、相机连接、图像采集到图像处理的完整过程。

qq_38334677的博客 2096

struts2为何使用值栈,如何获取值栈对象

一、什么是值栈 1、之前在web阶段,在servlet里面操作,把数据放到作用域对象里,在页面中使用el表达式获取到对应的值,域对象在一定的范围内存值和取值。 2、在struts2里面提供本身的一种存储机制,类似于域对象,是值栈,可以存值和取值 在action里面把数据存放到值栈里面,在页面中获取到值栈数据 3、servlet和action的区别 前面讲action生命周期时已经提到: servl...

Java开发,人工智能,边缘计算,致力于掌握前沿技术 969

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Struts2的值栈(ValueStack),详解+图解

值栈的概述 1、什么是值栈 Struts2将XWork对Ognl的扩展这一套机制封装起来,这个对象叫ValueStack。 ValueStack实际上就是一个容器。 它由Struts框架创建,当前端页面如jsp发送一个请求时,Struts的默认拦截器会将请求中的数据进行封装,并入ValueStack的栈顶。 ValueStack是Struts的一一个接口,字面意义为值栈,OgnIValueStack 是ValueStack 的实现类,客 户端发起一个请求struts2 架构会创建一个action 实例

程序员猫爪 2017

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Struts2--值栈(ValueStack)

值栈 值栈(ValueStack)就是 OGNL 表达式存取数据的地方。在一个值栈中,封装了一次请求所需要的所有数据。 在使用 Struts2 的项目中,Struts2 会为每个请求创建一个新的值栈,也就是说,值栈和请求是一一对应的关系,这种一一对应的关系使值栈能够线程安全地为每个请求提供公共的数据存取服务。 1.值栈的作用: 值栈可以作为一个数据中转站在前台与后台之间传递数据,最常见的就是将 S...

吴声子夜歌的博客 599

Camera2Demo

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

ssh备考-06Struts2 往值栈中存入值,以及前端获取值栈中的值

目录 注意点: 一、先搭建好struts2框架 index.jsp struts.xml User.java 二、往值栈压值,前端如何获取值 1.获取值栈 ValueStack1Action.java 2.往值栈压普通值 action2 success.jsp2 3.往值栈中压对象 推荐写法:push() ★ action3 success.jsp3 4.往值栈...

树叶子的博客 611

java 值栈的结构,【java】Struts2中值栈的理解

【java】Struts2中值栈的理解【java】Struts2中值栈的理解一、前言小编最近又继续学习了java的经典框架S2SH,在struts2中很激动人心的特性就是引入了值栈,统一管理数据,这样一来,数据统一管理,大大方便了程序的编写。那值栈到底是什么呢?小编慢慢道来。二、值栈是什么?值栈:是一个可以线程安全的为每个请求提供公共存储数据服务。当请求到达的时候,struts2会为每个请求安排不...

weixin_39999781的博客 111

Struts2的值栈深入理解

对Struts2这个框架用了很久,最近开发遇到一个关于值栈的问题,所以决定深入研究一下, 我们要知道OGNL只是显示数据的表达式语言 ValueStack值栈:存储数据的 研究源码:得到如下的理解   往对象栈(CompoundRoot extends ArrayList)中放数据         //把departmentList放入到了对象栈的栈顶         //...

simle168的博客 248

Struts2中值栈的理解

Struts2中值栈的理解   一、拦截器的初始化      如图所示呢,在一次请求过程中,拦截器首先会初始化一个值栈对象以供使用。初始化过程中,在Map对象里面放了request=,session=,application=,sttr=,parameters=,....;在Stack里放了action和其他一些对象(注意对象栈是先进后出,类似弹匣)。由此可见值栈的生命周期是一次请求。

Nickthink的博客 1万+

Struts2的值栈理解---ValueStack

一.什么是值栈 1.ValueStack是Struts2中提供的一个接口,只有一个实现类OgnlValueStack,我们平时使用的OGNL表达式就是从值栈中获取值. 2.我们编写的每一个Action都有与之对应的值栈对象,也就是说每一次Action请求都会产生一个ValueStack对象 3.Struts2框架把ValueStack保存在名称为struts.valueStack的reque

491

Struts2的值栈和OGNL牛逼啊

Struts2的值栈和OGNL牛逼啊 一 值栈简介: 值栈是对应每个请求对象的一套内存数据的封装,Struts2会给每个请求创建一个新的值栈,值栈能够线程安全的为每个请求提供公共的数据存取服务。 二 OGNL介绍: (1)基本数据: OGNL 是对象图导航语言 Object-GraphNavigationLanguage 的缩写,它是一种功能强大的表达式语言。 OGNL 访问 Val...

weixin_30446613的博客 103

java 值栈的结构_Struts2 | 深入浅出理解struts2中的值栈

在没有struts框架的时候,我们通常在Servlet中使用域对象进行存值和取值,将其作为载体来承载页面和后台之间的数据传递。在struts2中,我们又有了一种新的机制来进行数据的传递。那就是struts2为我们提供的ValueStack即值栈。在理解ValueStack之前我们先要了解一下Servlet和Action的区别:Servlet:默认在第一次访问的时候创建对象,但是它只会创建一次对象,...

weixin_32017501的博客 137

Struts2学习记录-Value Stack(值栈)和OGNL表达式

只是学习记录,把我知道的都说出来 一,值栈的作用记录处理当前请求的action的数据。二,小例子有两个action:Action1和Action2 Action1有两个属性:name和passwd Action2有两个属性:name2和passwd2 请求从Action1进入,chain方法导向Action2 Struts.xml配置信息:<?xml version="1.0" encodi

老高是我 1632

走进Struts2(五)— 值栈和OGNL

值栈 1.值栈是什么? 简单说:就是对应每一个请求对象的轻量级的内存数据中心。 Struts2引入值栈最大的好处就是:在大多数情况下,用户根本无须关心值栈,不管它在哪里,不用管它里面有什么,只需要去获取自己需要的数据就可以了。 2.值栈能干什么? 简单说:就是能够线程安全的为每一个请求提供公共的数据式服务。 3.值栈包含Map栈和对象栈,值栈通过ActionContext的getVal

NotPerfect-EOF 1424
下一篇: struts2是什么,有什么作用,怎么使用,有什么好处?
admin_gc
博客等级 码龄9年 7粉丝 3原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值