OGNL表达式的使用
1.OGNL技术的使用
1).什么是OGNL
源于ognl.jar工具包
Object Graphics Navigation Language(对象图导航语言)
主要用于访问对象的数据和方法。
2).OGNL基本原理
OGNL工具主要由3部分构成,具体如下
a.OGNL引擎
负责解析ONGL表达式,定位数据
b.Root根存储区(Object类型)
负责存储要访问的目标对象。
c.Context变量存储区(Map类型)
负责存放多个要访问的目标对象。
*3).OGNL基本语法
a.访问Root区域对象基本语法
--访问简单数据:"属性"
例如"name"
--访问数组或List集合:"属性[0]"
例如"arr[1]"
--访问Map集合:"属性['key']"或"属性.key"
例如"map.two"或"map['two']"
--访问方法:"属性值.方法()",
例如"list.size()"
--访问构造方法:"new 包名.构造方法"
例如"new java.util.Date()"
--访问静态成员:"@包名.类名@成员"
例如"@java.lang.Math@PI"
--创建List对象:"{元素1,元素2}"
--创建Map对象:
"#{key1:value1,key2:value2}"
b.访问Context区域对象基本语法
采用"#Key"开头.
2.OGNL技术在Struts的使用
在Struts2中有一个ValueStack数据对象,该对象存储了请求相关的所有数据信息。
例如request,session,application,action等.
Struts2采用OGNL工具对ValueStack进行操作。
1)xwork对OGNL进行了部分改造
在xwork中将原来OGNL标准结构中的Root存储区改造成了一个栈结构(CompoundRoot)
当利用"属性"表达式访问时,优先去栈顶对象寻找,没有再去次栈顶寻找。
2)ValueStack结构(OgnlValueStack)
(参考valuestack.jpg)
3)Struts2标签的使用
在JSP中,利用Struts2标签显示数据,需要为标签指定OGNL表达式,
标签利用表达式定位ValueStack中的数据,进行相应操作。
a) debug标签:显示valuestack状态
b) iterator标签:循环集合元素
value属性:指定ognl
var属性:指定循环变量,会被存放到ValueStack的context区域。
status属性:指定循环状态变量,会被存放到ValueStack的context区域.
该变量有count属性表示一共循环了多少个元素。
index属性表示当前循环元素的索引。
c) if...else...标签:判断分支
test属性:指定ognl判断表达式
d) property标签:显示数据
value属性:指定ognl表达式
e) date标签:将date数据格式化输出
name属性:指定ognl表达式
format属性:指定日期模板
OGNL表达式的使用相关推荐
- 关于OGNL表达式中的%,$,#
OGNL表达式非常强大-其中#.%.$这三个符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分,要认真区分. 1.#符号的用途一般有三种. 1)访问非根对象属性,例如示例 ...
- 深入理解Struts2中的OGNL表达式
Struts 2中的表达式语言 Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JST ...
- 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式
前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时代OGNL可是必会的数据渲染技术.它全称Object Graph Navigation Language,作 ...
- OGNL表达式语言中的#和$的区别
Struts2使用标准的Context来进行OGNL表达式语言求值,OGNL的顶级对象是一个Context,这个Context对象就是一个Map类型实例,其根对象就是 ValueStack,如果需要访 ...
- Struts(十):OGNL表达式(一)
Struts2 用s:porperty标签和OGNL表达式来读取值栈中的属性值: I.值栈中的属性值: 1.对象栈:读取对象栈中的某一个对象的属性值: 2.Map栈 :request,session, ...
- Struts2漏洞分析之Ognl表达式特性引发的新思路
摘要 在Ognl表达式中,会将被括号"()"包含的变量内容当做Ognl表达式执行.Ognl表达式的这一特性,引发出一种新的攻击思路.通过将恶意代码存储到变量中,然后在调用Ognl表 ...
- struts2教程(9)--OGNL表达式使用
OGNL表示式使用和值栈 一.介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的 ...
- struts2的OGNL表达式(二)
下面说说OGNL表达式的访问情况: OGNL表达式能访问:访问属性,访问方法,访问字体对象,访问静态属性和方法,访问构造方法,访问数组,访问集合 – 投影.选择(? ^ $) 1,OGNL输出常量值 ...
- struts2的OGNL表达式理解(一)
一,什么是OGNL表达式 OGNL是Object-Graph Navigation Language(对象图导航语言)的缩写,它是一种功能强大的表达式语言(Expression Languag ...
- java el ognl_el表达式跟ognl表达式的区别
EL表达式: >>单纯在jsp页面中出现,是在四个作用域中取值,page,request,session,application. >>如果在struts环境中,它除了有在上面 ...
最新文章
- 2021年大数据Kafka(四):❤️kafka的shell命令使用❤️
- 网络营销——网络营销专员到底是教你如何选择网站页面制作
- 网页上线后音频不能自动播放
- Springboot源码——应用程序上下文分析
- java.lang.IllegalThreadStateException 线程运行报错
- windows进入后自动注销处理
- centos 7.5 mysql_CentOS7.5安装MySQL8以及相关设置
- 计算机存储系统中,有哪些措施可以提高 CPU 访问存储系统的速度?
- cognos宏函数的使用prompt
- Python数字图像处理
- 阿里矢量图库 当前页全选
- bp神经网络 损失函数,bp神经网络参数优化
- CSR867x — 蓝牙音频发射器方案(支持USB、模拟和SPDIF)
- LINUX系统各发行版镜像源下载
- [资源数据]民族代码
- VSLAM学习记录-求导:李群与李代数
- c语言程序设计教学工作总结,C语言教学的工作总结范文
- gethostbyname和struct hostent详解
- c语言中以w方式进行文件操作时,文件操作
- Leetcode2057. 值相等的最小索引
热门文章
- 给定一个层数n,输出字母三角形
- python玫瑰花数量的含义_玫瑰花数量的含义?玫瑰花个数的含义?
- 2022-2028年中国骑行手套行业市场研究分析及投资前景规划报告
- JDK生成证书,在Nginx中配置HTTP+SSL
- ValueError: [E030] Sentence boundaries unset. You can add the 'sentencizer' component to the pipelin
- 用crash分析内核死锁的一次实践
- etcd+skydns构建私有域名解析服务器
- SVA——断言属性之序列(sequence与property的用法)
- 数据库 E-R图实例
- 用python画皇冠_用python做数字油画或者从一幅画学习风格,去画另一幅画