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属性:指定日期模板
       
 
 
       

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值