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环境中,它除了有在上面 ...
最新文章
- 厦门理工计算机研究生调剂,2018年厦门理工大学考研预调剂信息公布
- 引领新媒体时代的潮水方向—世相科技
- php书签源码,OneNav简约PHP导航书签源码
- Nmap的高级扫描(脚本)
- 超级灰色按钮克星1.4.1309.12
- oracle数据库使用hint来让模糊查询走索引
- Hello world cpp之旅 - 字符串(1)
- 造成跨域的原因和解决方法
- php数据字段多怎么存,一个保存时间的字段怎么存储数据
- 每周荐书:大数据、深度学习、架构(评论送书)
- MySQL常用命令基础操作
- 洛谷 P1168 中位数(优先队列)
- 用Nuget图形化界面打包类库(一)
- 机器学习与数据挖掘 编程实现k均值算法
- 深入了解PowerManagerService(一)之Android 11.0 Power 键亮屏灭屏流程分析
- ESP8266便携式物联网时钟(硬件篇) 代号:喵
- 计算机应用技术一班班徽,1班班徽设计图片大全欣赏
- 罗技 android蓝牙键盘,用上罗技K380 Multi-Device蓝牙键盘 我1分钟内就学会了分身术...
- 位列腾讯网易后面,三七互娱要页游“赚”云游戏?
- spring boot静态资源文件的访问以及自定义