struts2的值栈的初步认识

struts2 OGNL之<s:property>标签访问值栈(value stack)用法 struts2 OGNL之<s:property>标签访问值栈(value stack)用法,希望能对大家有帮助 立即下载

Struts2


OGNL概述

  1. 在web阶段,用EL表达式在jsp页面获取域对象的值。
  2. 用OGNL功能更强大,效率更高。
  3. 使用一般在struts2里操作值栈数据,和struts2标签一起使用,需要jar包,struts2提供了。
  4. 并且需要引入struts2标签库,<%@ taglib uri = "/struts-tags" prefix = "s" %>
  5. 然后使用<s:property value = "OGNL表达式" />得到值,如:<s:property value = "'haha'.length()" /> 会得到4.

值栈

一、概述

  1. 之前是在servlet中把数据放入域对象再使用。
  2. struts2提供本身的存储机制,类似域对象。在action中把值存入值栈,在页面中获取。
  3. 存储位置:每个访问均创建一个action对象(servlet是只创建一次),每个action中拥有自己的唯一个值栈对象。

二、值栈内部结构

  1. 值栈主要分为两部分,root和context。
  2. root是一个List集合,一般的操作就是操作root。
  3. context是一个Map集合,一般不会手动操作。并且key值是固定的,有request,session,application,paramters,attrs。

三、获取值栈对象

使用ActionContext类的方法
ActionContext actionContext = ActionContext.getContext();
ValueStack stack = actionContext.getValueStack();

注意:要在jsp页面过去值栈,首先要通过action转发到jsp,不能直接访问jsp

四、向值栈中存数据

1:通过push方法(一般不用)

stack.push(Object);
如:stack.push("ABCD");

2:通过set方法(很少使用)

stack.set(key,Object);
如:stack.set("username","lalalalala");

3:通过action的属性存入

注意!此种方法是存入action中,比前两种更省空间。

(1)定义变量和get()方法。在action的成员变量的位置,

private String name;      //存入一个字符串
public String getName() {
    return name;
}

private User user;        //存入一个对象
public User getUser() {
    return user;
}

private List<User> list;  //存入一个list集合,集合的泛型是一个类
public List<User> getList() {
    return list;
}       


(2)设置值。一般在execute()方法中

name = "This is my name";     

user = new User();             //注意在这里要new
user.setUsername("李");        //设置值
user.setPassword("123");
user.setAddress("美gui");

list = new ArrayList<User>();
list.add(user);                //添加值
list.add(user);

五、在jsp页面从值栈中获取数据

1:使用debug标签查看值栈结构

 <s:debug></s:debug>

2:获取字符串

<s:property value = "name"/>     //This is my name

3:获取对象

<s:property value = "user.username"/>   //李
<s:property value = "user.password"/>   //123
<s:property value = "user.address"/>    //美gui

4:获取list集合

//第一种,知道下标
<s:property value = "list[0].username"/>
<s:property value = "list[0].password"/>
<s:property value = "list[0].address"/>

//第二种,循环
<s:iterator value = "list">
    <s:property value = "username"/>   //在这里可以直接写放入的对象的属性
    <s:property value = "password"/>
    <s:property value = "address"/>
    <br/>
</s:iterator>

//第三种,高性能
<s:iterator value = "list" var = "user">
    <s:property value = "#user.username"/>
    <s:property value = "#user.password"/>
    <s:property value = "#user.address"/>
    <br/>
</s:iterator>
因为这种是从root临时放到了context,有一个临时空间,那么要访问context需要'#'。

5:若使用set方法存入的值栈

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

6:若使用push存入的值栈(真的基本不用)

7:不是放入值栈,而是放入request等域

因为request,session,application等都是在context中,那么也可以获得。

<s:property value = "#request.key" />

如:
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("req","reqValue");

<s:property value = "#request.req" /> 既可以获取到 reqValue 

8:在表单中,想设置初始值用OGNL

需要用到 % 
<s:textfield name = "...." value = "%{#request.req}" />
那么初始值就是context中的request的req对应的值。
MNI152 坐标空间和 fsaverage 坐标空间相互转换, 如已知fsaverage空间的坐标如何求MNI152 坐标?aparc.a2009s.annot转化到MNI152空间? 大多数神经影像学研究的结果是在体积(例如,MNI152)或表面(例如,fsaverage)坐标系中报告的。体积坐标系和表面坐标系之间的准确映射可以促进许多应用,例如将 fMRI 组分析从 MNI152 投影到 fsaverage 以进行可视化或从 fsaverage 投影静息状态 fMRI 分区对 MNI152进行新数据的体积分析。Wu et al., 2018 评估了三种在 MNI152通过模拟上述应用的 Colin27 和 fsaverage 坐标系:将组平均数据从 MNI152/Colin27 投影到 阅读详情

相关推荐

Unipush2.0 App消息推送(在线+离线推送)

使用unipush2.0进行消息推送,包含在线跟离线

weixin_50251467的博客 3694

值栈

值桟&amp;OGNL OGNL概述 之前web阶段,学习过EL表达式,EL 表达式在JSP中获取域对象里面的值,不能在HTML页面使用 OGNL 是一种更强大的表达式 主要用途 在Struts 中,操作值桟数据 一般把OGNL在Struts2 操作,和Struts2标签一起使用 OGNL不是Struts2的一部分,它是单独的一部分. 什么是OGNL 全称是 对象图导航语言 (Obje...

u011358195的博客 536

LLM大模型-vLLM本地部署全流程:Windows WSL2环境安装、HuggingFace与Modelscope模型加载与本地运行、Docker化部署与镜像分发

vLLM本地部署大模型方案 vLLM是一款高性能大模型推理引擎,通过PagedAttention技术显著提升吞吐量和内存效率,支持低成本、高并发的本地部署。 核心优势: 性能卓越:吞吐量远超同类方案,支持连续批处理等高级功能 成本优化:减少GPU服务器需求 兼容性强:提供类OpenAI的简洁API 部署步骤: 硬件准备:需NVIDIA GPU(如A100/3090),显存≥模型参数量×2(7B模型需14GB) 软件环境: Linux系统或Windows WSL2 安装CUDA 12.1+和Python 3.

2202_75674969的博客 4565

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

终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化[外链图片转存中…(img-CikQ4uw0-1713343249265)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_83916435的博客 1235

手把手教你用STM32F303和LAN9252搭建EtherCAT从站(附IO/AD/DA完整代码)

本文详细介绍了如何使用STM32F303和LAN9252搭建EtherCAT从站,涵盖硬件选型、开发环境配置、协议栈移植及IO/AD/DA功能实现。通过实战指南和完整代码,帮助开发者快速掌握工业自动化中的实时通信技术,提升系统性能与可靠性。

weixin_26802933的博客 235

Intouch间接变量(扩展)

间接变量只是Intouch提供给开发者的便捷方式之一,并不是所有情况都一定要使用间接变量,有时候用条件语句或者内存变量的方式也能起到类似的作用。

weixin_41571357的博客 2167

值栈详解(ValueStack)

什么是值栈 之前web阶段,在servlet里面进行操作,把数据放到域对象里面,在页面中使用el表达式获取到。域对象在一定范围内,存值和取值。 在struts2里面提供了本身的一种存储机制,类似于域对象,是值栈,可以存值和取值。 在action里面把数据放到值栈里面,在页面中获取到值栈的数据。 注意:对于存值,你可以使用servle...

cherry_vicent的专栏 646

从ISCXTor2016到CICIDS2017:手把手教你下载和使用UNB的网络安全数据集

本文详细介绍了UNB大学发布的ISCXTor2016和CICIDS2017等网络安全数据集的下载与使用方法,特别适合加密流量识别和网络行为分析研究。文章提供了多种高效获取路径、文件结构解析及实战分析示例,帮助研究者快速上手这些真实场景捕获的精细标注数据集。

weixin_42524945的博客 630

值栈基础学习

一.值栈是什么? 简单来说,值栈是对应每一个请求对象的轻量级的内存数据中心。 二.特点 1.它统一管理数据,供Action,Result,Interceptor等其他组件使用,这样一来,数据被集中管理,大大方便了编程。 2.大多数情况下,用户无需关心其内部,只需要去获取自己需要的数据就可以了,即用户可以隐式的使用值栈。 3.但当我们需要编写自定义的Result或拦截器等复杂功能时,还是需要显示访问...

c1776167012的博客 397

VMware16虚拟机:下载和安装教程

VMware16 虚拟机 下载和安装教程

MQ0522的博客 20万+

YOLOv8改进 | 主干篇 | 轻量级的低照度图像增强网络IAT改进YOLOv8暗光检测(全网独家首发)

本文给大家带来的改进机制是轻量级的变换器模型:Illumination Adaptive Transformer (IAT),用于图像增强和曝光校正。其基本原理是通过分解图像信号处理器(ISP)管道到局部和全局图像组件,从而恢复在低光或过/欠曝光条件下的正常光照sRGB图像。具体来说,IAT使用注意力查询来表示和调整ISP相关参数,例如颜色校正、伽马校正。模型具有约90k参数和约0.004s的处理速度,能够在低光增强和曝光校正的基准数据集上持续实现优于最新技术(State-of-The-Art, SOTA)

Snu77的博客 7958

java struts2下载,【Java资源下载】Struts2框架2016版

Struts2教程:本次学习主要分4天进行,四天的大纲如下,播妞会将第一天的笔记及内容为大家讲解,其他内容已做整理,大家可以回帖下载哦~课程大纲第一天:第一天struts2入门1、struts2概述2、struts2入门3、struts2底层执行过程4、struts2相关配置5、struts2的action创建6、struts2的action访问第二天:struts2数据操作1、结果页面配置2...

weixin_42131443的博客 157

Autosar诊断实战系列05-Dcm之0x27加解密服务配置开发详解

UDS 0x27服务实战开发介绍,对解锁尝试次数及delay时间进一步解释。

initiallizer的博客 1991

struts2中的值栈的详解

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

haha_66666的博客 2753

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

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的

上善若泪 528

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

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

struts2中的值栈

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

jys1115的专栏 1004

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Struts2笔记整理七】值栈

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

小异常的博客 552

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

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

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

Struts2中的值栈

什么是值栈 ValueStack是Struts2的一个接口,字面意义为值栈,OgnlValueStack是ValueStack的一个实现类,客户端发起一个请求struts2架构就会创建一个action实例同时创建一个OgnlValueStack值栈实例。OgnlValueStack贯穿整个Action的生命周期,struts2中使用OGNL将请求Action的参数封装为对象储存到值栈中,并通过ON...

weixin_40007271的博客 356

Struts2--值栈(ValueStack)

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

吴声子夜歌的博客 599

struts2--关于值栈的概念性问题

重要参考:http://www.cnblogs.com/ningvsban/p/3739622.html http://www.cnblogs.com/ningvsban/p/3739682.html 结论: 1 狭义值栈   通常指的是实现com.opensymphony.xwork2.util.ValueStack接口的对象,目前就是com.opensymphony.x

nupt_Wang的专栏 1126

简单了解Struts2中的值栈

值栈对象 用户提交Action请求后系统当即创建Action实例和值栈对象,Struts2中的值栈ValueStack是一个接口,其实现类为OgnlValueStack。其中最重要的两个属性是CompoundRoot root(本质是ArrayList,值栈操作时视其为栈)和transient Map<String, Object> context(OgnlValueStack将创建的map的引用传递给context)。 Tips:transient关键字可以将一个类的指定属性忽略序列化传输..

WanAkiko. 248

java struts2值栈ognl_Struts2-值栈与OGNL

OGNL表示式使用 和 值栈OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts2框架使用OGNL作为默认的表达式语言。* xwork 提供 OGNL表达式* ognl-3.0.5.jarOGNL 是一种比EL 强大很多倍的语言OGNL 提供五大类功能1、支持对象方法调用,如xxx.doSomeSpecial();...

weixin_30857403的博客 219

Struts2:值栈

值栈 在学习web开发时,我们在servlet里面进行操作,把数据放到域对象里面,在页面中使用el表达式获取数据,域对象在一定范围内存值和取值。 struts2本身就提供一种存储机制,类似于域对象,叫值栈,用于存值和取值。 在action把数据放到值栈里面,在页面中获取到值栈数据。 servlet和action区别 Servlet:默认在第一次访问时候创建,创建一次,单实例对象。 Ac...

离开屏幕的光,哪盏灯照亮你的孤独? 224

快速入门Struts2㊁OGNL表达式,struts2标签,值栈

1 OGNL,Struts2标签,值栈? 2 采用OGNL+struts2标签+值栈 2.1 搭建项目环境 2.2 Action中向值栈存数据 2.3 JSP中从值栈取数据 3 本文代码资源下载 更多Struts2在框架开发 1 OGNL,Struts2标签,值栈? 传统Servlet中,通常要把数据放入域对象中,然后在JSP页面使用EL表达式+JSTL标签...

优快云 481
上一篇: POJ2084—Game of Connections(c++高精度)
下一篇: POJ3692——Kindergarten(最大二分匹配)
WaveBridge
博客等级 码龄10年 8粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值