(补充)9.Struts2中的OGNL表达式

OGNL表达式概述

1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写
    * 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象
    * 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性

2. Struts2框架使用OGNL作为默认的表达式语言
    * OGNL是一种比EL强大很多倍的语言
    * xwork提供 OGNL表达式
    * ognl-3.0.5.jar

3. OGNL 提供五大类功能
   * 支持对象方法调用
   * 支持类静态的方法调用和值访问
   * 访问OGNL上下文(OGNL context)和ActionContext
   * 支持赋值操作和表达式串联
   * 操作集合对象

4. 测试的代码
    // 访问对象的方法
    @Test
    public void run1() throws OgnlException{
        OgnlContext context = new OgnlContext();
        // 获取对象的方法
        Object obj = Ognl.getValue("‘helloworld‘.length()", context, context.getRoot());
        System.out.println(obj);
    }

    // 获取OGNL上下文件的对象
    @Test
    public void run3() throws OgnlException{
        OgnlContext context = new OgnlContext();
        context.put("name", "美美");
        // 获取对象的方法
        Object obj = Ognl.getValue("#name", context, context.getRoot());
        System.out.println(obj);
    }

    // 从root栈获取值
    @Test
    public void demo3() throws OgnlException{
        OgnlContext context = new OgnlContext();
        Customer c = new Customer();
        c.setCust_name("haha");
        context.setRoot(c);
        String name = (String) Ognl.getValue("cust_name", context, context.getRoot());
        System.out.println(name);
    }


在Struts2框架中使用OGNL表达式

1. Struts2引入了OGNL表达式,主要是在JSP页面中获取值栈中的值
2. 具体在Struts2中怎么使用呢?如下步骤
    * 需要先引入Struts2的标签库
        > <%@ taglib prefix="s" uri="/struts-tags" %>

    * 使用Struts2提供的标签中的标签
        > <s:property value="OGNL表达式"/>

3. 在JSP页面使用OGNL表达式
    * 访问对象方法
        <s:property value="‘hello‘.length()"/>
时间: 2024-10-12 23:36:59

(补充)9.Struts2中的OGNL表达式的相关文章

Struts2中使用OGNL表达式语言访问静态方法和静态属性以及我遇到的问题和解决方法

1.上一篇文章,我介绍了OGNL表达式语言,本来想在那篇文章上加上一个使用OGNL访问静态方法和静态属性的例子,但是昨天晚上我写代码时,报了一个警告,获取得到静态属性的值,却获取不到静态方法的返回值,所以今天特别的写篇文章来介绍一下. 2.这里我先附上这个例子,来了解如何使用OGNL表达式访问静态方法和属性. (1).其中访问静态方法或者静态属性的语法分别为:@类的路径@方法名,@类的路径@属性名,语法中类的路径,即包名+类名. (2).对于OGNL来说,java.lang.Math是其默认的类

(转) STRUTS2中的OGNL

OGNL表达式是(Object-Graph Navigation Language)是对象图形化导航语言.OGNL是一个开源的项目,struts2中默认使用OGNL表达式语言来显示数据.与serlvet中的el表达式的作用是一样的.OGNL表达式有下面以下特点: 支持对象方法调用,例如:objName.methodName(); 支持类静态的方法调用和值访问,表达式的格式为 @[类全名(包括包路经)] @[方法名 |  值名] 例如: @[email protected]('foo%s','ba

Struts2中的OGNL详解

首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的. OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示.它里面可以存放很多个JavaBean对象.

【转】Struts2中的OGNL详解 (1)

 转载声明:菰☆淚 - Struts2中的OGNL详解 首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的. OGNL上下文实际上就是一个Map对象,由ognl.OgnlCont

【转】Struts2中的OGNL详解 (2)

转载声明:菰☆淚 -Struts2中的OGNL详解 总结OGNL的使用方法: 访问属性 名字属性获取:<s:property value="user.username"/><br> 地址属性获取:<s:property value="user.address.addr"/><br> 访问方法 调用值栈中对象的普通方法:<s:property value="user.get()"/><

Struts2中的OGNL详解 《转》

首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的. OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示.它里面可以存放很多个JavaBean对象.

struts2中的OGNL

OGNL中重要的3个符号:#.%.$: #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分,需要时间的积累才渐渐弄清楚…… 1.#符号 #符号的用途一般有三种. —    访问非根对象属性,例如#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀.实际上,#相当于ActionContext. getContext():#session.msg表达式相当于ActionContext.getContext()

struts2学习笔记--OGNL表达式1

struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性和静态方法,只需要在类名前,方法前加上@,如@[email protected]; 支持赋值操作.如赋值#value=5; 能够访问OGNL上下文和ActionContext; 能操作集合类对象. 使用OGNL: public class Test { public static void main

Struts2中使用OGNL

OGNL(Object Graphic Navigatino Language) OGNL称为对象图导航语言.以一个对象为根(起点),通过OGNL可以访问与这个对象关联的其它对象,正所谓“对象导航,顺藤摸瓜” 使用OGNL的jsp需要引入标签库:<%@taglib prefix="s" uri="/struts-tags"%> struts.xml <?xml version="1.0" encoding="UTF-8