Struts2的OGNL

struts2ognl <!-- ognl表达式,配合struts2标签使用 <s:property/>类似jsp的表达式(),将值输出到浏览器上 value:设置的字符串默认为一个ognl表达式,应该根据该表达式去获得值 如果将值按字符串形式输出,加单引号括起来 --> <s:property value="OGNL-Expression"/> <s:property value="abc"/> <s:property value="'OGNL-xyz 阅读详情

OGNL获取Context中的对象中的属性的方法很简单:person.name就可以获取person对象的name属性的值。OGNL会从当前valueStack开始查找所要求的属性,一直往上层查找,直到找到为止。

除此之外,Struts2还提供了一些命名对象,它们存在于Stack Context中,所以访问这些对象时需要使用#前缀来指明。

 

1,parameters对象,用于访问HTTP请求参数。如#parameters['foo']或#parameters.foo,用于返回调用HttpServletRequest.getParameter("foo")的返回值。

 

2,request对象,用于访问HttpServletRequest的属性。如#request['foo']或#request.foo,用于返回调用HttpServletRequest.getAttribute("foo")的返回值。

 

3,session对象,用于访问HttpSession的属性。如#session['foo']或#session.foo,用于返回调用HttpSession.getAttribute("foo")的返回值。

 

4,application对象,用于访问ServletContext的属性。如#application['foo']或#application.foo,用于返回调用ServletContext.getAttribute("foo")的返回值。

 

5,attr对象,如果可以访问到,则访问PageContext,否则将依次搜索如下对象:HttpServletRequest, HttpSession , ServletContext中的属性。

 

OGNL表达式还可以直接生成一个集合,如:

 

{e1,e2,e3}可以生成一个List;多个元素之间以英文逗号分隔。

 

#{key1:value1,key2:value2}可以生成一个Map;key-value之间以英文冒号分隔,多个元素之间以英文逗号分隔。

 

OGNL还提供了两个元素符:in和not in,in判断某个元素是否在指定的集合中,not in判断某个元素是否不在指定集合中。如下例:

 

<s:if test="'foo'" in {'foo','fooo'} >包含</s>

 

<s:if test="'foo'" not in {'foo','fooo'} >不包含</s>

 

除此之后,OGNL还允许通过某个规则取得集合的子集。取得子集时有如下3个操作符:

 

1,? 取出所有符合选择逻辑的元素

 

2,^ 取出符合选择逻辑的第一个元素

 

3,$ 取出符合选择逻辑的最后一个元素

 

如以下代码:person.relatives.{? #this.gender == 'male'}

 

直接在集合后紧跟.{}运算符表明用于取出该集合的子集,在{}内使用?表明取出所有符合选择逻辑的元素,而#this代表集合里元素。因此,上面代码的含义是:取出person里所有的gender等于male的relatives的属性的集合。

 

OGNL支持基本的Lambda(λ)表达式语法。通过这种Lambda表达式语法,可以让我们在OGNL表达式中使用一些简单的函数。如下面的斐波那契数列:

 

   if n==0 return 0;

   elseif n==1 return 1;

   else return fib(n-2)+fib(n-1);

 

   fib(0)=0

   fib(1)=1

   fib(11)=89

 

我们可以使用OGNL表达式来求该数列中第11个元素的值:

 

<s:property value="#fib =:[#this==0 ? 0 : #this==1 ? 1 : #fib(#this-2) + #fib(#this-1)], #fib(11)" />

 

用OGNL表达式取出valueStack中的值的方式为${requtestScope.username};

【问题解决】解决 Python `PermissionError` 权限不足:文件/进程/端口全场景修复 本文总结了Python程序中常见的权限问题及解决方案,包括文件、进程和端口权限错误。文件权限问题通常由文件占用、权限不足或路径错误引起;进程问题多因权限不足或系统限制;端口问题则与端口占用、防火墙或特权端口相关。解决方案提供了详细的代码实现:文件权限管理器类(FilePermissionManager)包含检查权限(check_permission)、修复权限(fix_permission)、安全写入(safe_write)和安全删除(safe_delete)等方法,通过异常处理和临时文件等技术确保操作安全 阅读详情

相关推荐

拼多多爬虫实战:逆向sign与anti_content动态参数解析

现代电商爬虫已远超基础HTTP请求范畴,其核心在于理解服务端如何通过动态签名(sign)、设备指纹、行为验证等多维机制定义‘合法请求’。拼多多作为典型代表,将价格、销量、评价等关键数据完全剥离HTML,转由强校验API返回,依赖HMAC-SHA256嵌套签名、anti_content前端加密载荷及滑动验证token闭环。这类机制本质上是客户端环境可信度与请求上下文一致性的实时博弈,技术价值在于保障数据安全与业务风控。典型应用场景包括竞品价格监控、销量趋势分析、评价情感挖掘等需高保真数据的商业分析任务。本文聚

weixin_29741447的博客 833

STRUTS2中的OGNL

[类全名(包括包路经)]@[方法名|值名]例如:访问OGNL上下文(OGNLcontext)和ActionContext操作集合对象类图ValueStackValueStack是一个接口,在struts2中使用OGNL表达式实际上是使用实现了ValueStack接口的类OgnlValueStack,这个类是OgnlValueStack的基础。ValueStack贯穿整个action的生命周期。每一个action实例都拥有一个ValueStack对象。

2501_90251017的博客 966

倍福TC3 PLC高速采集实战:如何用PLC-Recorder实现0.24ms级时间戳同步

本文详细介绍了倍福TC3 PLC与PLC-Recorder实现0.24ms级时间戳同步的工程实践方案。通过硬件拓扑设计、时间源选择优化、报文结构封装及同步验证方法,为工业自动化领域的高精度数据采集提供了可靠解决方案,特别适用于精密装配、激光切割等微秒级同步要求的场景。

weixin_29193359的博客 372

struts2 之 OGNL

struts2 之 OGNLOGNLOGNL 简介ValueStackOGNL 的jar包OnglExpression示例讲解Demo1DemoAction OGNL OGNL 简介 OGNL 的全称是Object Graph Navigation Language(对象图导航语言), 它是一种强大的表达式语言 OgnlContext( ognl上下文 ) 其实就是Map(教室、老师、学生) m...

qq_44641053的博客 283

CentOS 7 离线升级 OpenSSH 9.9p2 保姆级教程(含依赖包下载与常见报错解决)

本文提供了一份详尽的CentOS 7系统离线升级OpenSSH至9.9p2版本的完整教程。针对无外网环境,重点讲解了依赖包(尤其是OpenSSL 3.x)的离线下载与编译部署,并深入解决了编译过程中常见的“libcrypto.so缺失”等动态库链接错误。教程涵盖从环境准备、源码编译、服务配置到系统集成的全流程,最后还提供了关键的回滚方案与应急预案,是运维人员在内网环境中进行安全加固的实用指南。

weixin_29248313的博客 324

告别单一查询!MultiQueryRetriever在LangChain中的高级用法解析

本文深入解析了LangChain中的MultiQueryRetriever高级用法,该工具通过大语言模型自动生成多样化查询,显著提升文档检索的召回率和准确性。文章详细介绍了其核心机制、高级配置调优策略以及在多语言和专业领域中的实际应用,为开发者提供了优化知识库问答系统的实用方案。

weixin_28730927的博客 271

struts2之ognl

本文章给大家介绍下struts2框架的子控制器类的赋值操作及原理 目录 OGNL ValueStack ActionContext OGNL在页面中获取后台数据格式 OGNL OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lambda表达式等 接下来给大家展示两个JavaBean类,整个OGNL的介绍,将围绕着这两个类展开 ...

鑫709的博客 1066

ISO13849功能安全从入门到精通(3):安全功能及其对降低风险的贡献4

例如,如果机器必须在有限速度下运行时进行设置,那么在低加速度值下进行设置时,参数P1将是正确的选择:随着危险缓慢出现并给予足够的运动自由,操作员将能够移出危险区域。例如,在无故障的条件下,在操作者的手的方向移动的滚子不能陷住它。在所有其他情况下,F1是正确的选择,前提是危险暴露的持续时间不超过机器总操作时间的1/20。需求来源于必要的风险降低。由于这些考虑而降低的PLr在任何情况下都不得低于通过比较方式考虑的机器的PLr,因为并不能从事故发生率低和严重程度低得出实施的安全功能提供的安全水平高于要求。

wdconan001的博客 835

Struts2之ognl

Struts2之ognl基础OGNL什么是OGNLOGNL上下文ValueStack值栈什么是值栈值栈的存储位置总结 OGNL 什么是OGNL OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言。 OGNL上下文 OgnlContext(OGNL上下文)其实就是Map集合 OgnlContext由根对象(1个)+非根对象(N个)组成 root 非根对象要通过"#key"访问,根对象可以省略"#key"(因为根对象只有一个,加不加#

m0_46699799的博客 279

电路板保险丝如何选型

在电路板保险丝选型过程中,需要考虑多个因素以确保其适合特定的电路需求。最后,经过以上程序选定的样品需要在实际的电路中进行测试,以验证所选择的保险丝是否合适。

weixin_57010826的博客 1310

Python爬虫深度对抗:拼多多与得物价格监控系统中的设备指纹模拟与SkyWalking风控绕过实战

在电商数据采集领域,拼多多和得物(毒)APP堪称国产风控系统的“双子星”。前者依托于拼多多集团强大的安全团队,后者则以其独特的“潮流单品”数据价值和高昂的爬取成本闻名。对于任何一名爬虫工程师而言,能够稳定、高效地获取这两大平台的价格、库存、销量等动态信息,都是一项极具挑战性的技术试金石。传统的基于requests库的简单HTTP请求,在面对这两款应用时几乎寸步难行。你会发现,无论怎样伪造User-Agent、怎样轮换代理IP,返回的永远是状态码412403,或者是一个包含验证滑块设备异常的JSON错误。

2201_76125261的博客 865

Struts2之OGNL

Struts2之OGNL简介案列说明 简介 1 OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言 2 OgnlContext(ongl上下文)其实就是Map OgnlContext=根对象(1)+非根对象(N) 非根对象要通过"#key"访问,根对象可以省略"#key" 注:context:英文原意上下文,环境/容器 重点...

qq_44847231的博客 175

【Unity 实用工具篇】✨| I2 Localization 实现本地化及多种语言切换,快速上手

Unity的多语言本地化是一个很实用的功能,它可以帮助游戏支持多种语言,让不同语言的玩家都能够更好地体验游戏。 而实现本地化的方案也有很多种,各个方案之间也各有优劣,后面也会对多个方案进行介绍学习。 本文就来介绍一个专门作用于多语言本地化的插件:I2 Localization 。

努力前行,总会成为自己心中的那道光 3万+

struts2 ognl_Struts2 OGNL

struts2 ognlStruts2 OGNL is the expression language where OGNL stands for Object-Graph Navigation Language. OGNL is tightly coupled in Struts2 and used to store form parameters as java bean variables ...

从零开始的教程世界 228

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

struts2 中的ognl

OGNL是Object Graphic Navigation Language(对象导航图语言)的缩写,它是一个开源项目。Struts2框架使用OGNL作为默认的表达式语言

快乐小编的专栏 735

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Apache Struts2 OGNL RCE注入

Apache Struts2(也称为 Struts2)是一个开源的 Java Web 应用框架。它主要用于构建企业级应用程序,提供MVC)架构支持,帮助开发者快速开发可维护的 Web 应用。Struts2 基于OGNL)表达式语言来处理数据绑定、表单验证和动态内容渲染等功能。它是Struts1的后继版本,从 2006 年左右开始流行,但由于历史漏洞较多,现在许多项目已转向更现代的框架如 Spring MVC。

Gse0a362g的博客 608

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Struts2学习笔记三:OGNL表达式学习、Struts2与Ognl表达式的结合原理

文章目录1. Struts2学习笔记三:OGNL表达式学习、Struts2与Ognl表达式的结合原理1.1. 什么是OGNL表达式1.2. 使用OGNL表达式1.3. Struts2和ONGL表达式的结合原理 1. Struts2学习笔记三:OGNL表达式学习、Struts2与Ognl表达式的结合原理 1.1. 什么是OGNL表达式 OGNL:对象视图导航语言,是比EL表达式有更加丰富的功能,E...

公子&小白的博客 725

Struts2中的OGNL

什么是OGNL OGNL 英文Object-Graph Navigation Language(对象导航语言),听着挺悬乎,其实就是一种表达式语言,OGNL是一种强大的技术,它被集成在Struts2中,用来帮助数据转移和类型转换。   我们使用OGNL表达式将java端的数据属性和基于文本的视图层中的字符串绑定起来,这通常出现在表单输入字段的name属性或者struts2标签的各种属性

RiceToLife的博客 502

Struts2中的OGNL详解

一、OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能。 二、OGNL的基础知识: 1. OGNL表达式的计算是围绕OGNL上下文进行的 OGNL上下文实际上...

297

Struts2之Ognl

OGNL简介 1.1 OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言 1.2 OgnlContext(ongl上下文)其实就是Map (教室、老师、学生) OgnlContext=根对象(1)+非根对象(N) 老师:跟对象 1 学生:非根对象 EL表达式和OGNL的区别: EL 是为了方便在这个9...

only老K的博客 qq:1025271924 273

struts2的OGNL的使用

要谈OGNL在Struts2中的应用,首先得明白OGNL到底是什么 在值栈中的对象,可以直接访问,但是用#.对象的时候却又访问不到,但用#this.对象的时候又可以访问得到,用%所有的没关系的 OGNL 的历史 OGNL 最初是为了能够使用对象的属性名来建立 UI 组件 (component) 和 控制器 (controllers) 之间的联系,简单来说就是:视图 与 控制器

daniel_wu2007的专栏 701

Struts2中OGNL表达式的用法

今天分享的是Struts2框架中的一种ognl表达式语言,主要分两个目标去学习     1.理解struts2传值的优先级     2.ognl与el的区别 一:ognl表达式语言简介   OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性...

a846075506的博客 315

Struts2中的ognl标签

1、ValueStack与<s:debug>标签 Struts 2框架使用OGNL作为默认的表达式语言,先用<s:property> 标签体验一下ognl表达式和调动学习热情,例如,显示Action中的一个属性和显示一个请求参数。 OGNL表达式就是针对一个称为OGNL...

chenqiaodezhi57164的博客 151

理解Struts2中OGNL的使用

关于Struts2标签中,OGNL的使用问题,最近抽空整理了理解和使用OGNL的要点,分享一下1、理解Struts2中的ValueStackValueStack实际是一个接口,在Struts2中利用OGNL时,实际上使用的是实现了该接口的OgnlValueStack类,这个类是Struts2利用OGNL的基础。OgnlValueStack类的主要属性关系图如下:          

liaochangfa的专栏 764

struts2之ognl表达式

struts2之ognl基础前言ognlValueStack(值栈) 前言 之前讲了基于maven的struts2框架项目的简单流程,这次主要讲关于struts2的ognl。 ognl 什么是ognl? OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言。 说起表达式语言我们就会想起来el表达式,ognl表达式与el表达式最大的区别就是他可以存值也可以取值,而el表达式只能取值。 什么是ognl上下文? OgnlContext(OGN

JiangHu_Java的博客 355
上一篇: struts流程图
下一篇: SAX和Dom4j
fejay
博客等级 码龄19年 7粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值