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表达式的使用相关推荐

  1. 关于OGNL表达式中的%,$,#

    OGNL表达式非常强大-其中#.%.$这三个符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分,要认真区分.   1.#符号的用途一般有三种. 1)访问非根对象属性,例如示例 ...

  2. 深入理解Struts2中的OGNL表达式

    Struts 2中的表达式语言 Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JST ...

  3. 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式

    前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时代OGNL可是必会的数据渲染技术.它全称Object Graph Navigation Language,作 ...

  4. OGNL表达式语言中的#和$的区别

    Struts2使用标准的Context来进行OGNL表达式语言求值,OGNL的顶级对象是一个Context,这个Context对象就是一个Map类型实例,其根对象就是 ValueStack,如果需要访 ...

  5. Struts(十):OGNL表达式(一)

    Struts2 用s:porperty标签和OGNL表达式来读取值栈中的属性值: I.值栈中的属性值: 1.对象栈:读取对象栈中的某一个对象的属性值: 2.Map栈 :request,session, ...

  6. Struts2漏洞分析之Ognl表达式特性引发的新思路

    摘要 在Ognl表达式中,会将被括号"()"包含的变量内容当做Ognl表达式执行.Ognl表达式的这一特性,引发出一种新的攻击思路.通过将恶意代码存储到变量中,然后在调用Ognl表 ...

  7. struts2教程(9)--OGNL表达式使用

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

  8. struts2的OGNL表达式(二)

    下面说说OGNL表达式的访问情况: OGNL表达式能访问:访问属性,访问方法,访问字体对象,访问静态属性和方法,访问构造方法,访问数组,访问集合 – 投影.选择(? ^ $) 1,OGNL输出常量值 ...

  9. struts2的OGNL表达式理解(一)

    一,什么是OGNL表达式     OGNL是Object-Graph Navigation Language(对象图导航语言)的缩写,它是一种功能强大的表达式语言(Expression Languag ...

  10. java el ognl_el表达式跟ognl表达式的区别

    EL表达式: >>单纯在jsp页面中出现,是在四个作用域中取值,page,request,session,application. >>如果在struts环境中,它除了有在上面 ...

最新文章

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

热门文章

  1. 数论——————最简分数
  2. 使用cloudcompare使xy轴的值反过来
  3. 关于闵帆老师《论文写作》课程的心得感受
  4. SAP系统 月结步骤
  5. 结合MBTI人格理论探讨爱因斯坦的两次婚姻
  6. 仿豆瓣(静态web布局)(全)
  7. dnf 跨服 服务器 位置,《DNF》86版本跨区表一览 看你属于哪个跨区频道
  8. 利用word和excel实现中英文互换
  9. 对数公式大全(及其Markdown语法)
  10. 4K Wallpaper HD Wallpapers for mac(4K壁纸软件)