1. 程式人生 > >Struts2之OGNL表示式概述

Struts2之OGNL表示式概述

OGNL表示式概述

OGNL 是Object Graphic Navigation Language(物件圖導航語言)的縮寫

  • 所謂物件圖,即以任意一個物件為根,通過OGNL可以訪問與 這個物件關聯的其他物件
  • 通過它簡單一致的表示式語法,可以存取物件的任意屬性,呼叫物件的方法,遍歷整個物件的結構圖,實現欄位型別轉化等功能,它使用相同的表示式取存取物件的屬性

Struts2框架使用OGNL作為預設的表示式語言

  • OGNL 是一種比 EL強大很多倍的語言
  • xwork提供OGNL表示式
  • ognl-3.0.5.jar

OGNL提供五大類功能

  • 支援物件方法呼叫
  • 支援類靜態的方法呼叫和值訪問
  • 訪問OGNL上下文(OGNL context)和ActionContext
  • 支援賦值操作和表示式串聯
  • 操作集合物件
public class OgnlDemo {
    @Test
    public void run1() throws OgnlException {
        //上下文物件
        OgnlContext context = new OgnlContext();
        //獲取到根物件
        Object root = context.getRoot();
        //儲存資料
        context.put("name","梅梅");
        //獲取值,表示式寫法
        Object value = Ognl.getValue("#name", context, root);
        System.out.println(value);

     //   Object value1 = Ognl.getValue("'haha'.length()", context, root);
       // System.out.println(value1);

    }

    //OGNL表示式呼叫方法
    @Test
    public void run2() throws OgnlException{
        //上下文物件
        OgnlContext context = new OgnlContext();
        //獲取到根物件
        Object root = context.getRoot();
        //獲取值,表示式寫法
        Object value1 = Ognl.getValue("'haha'.length()", context, root);
        System.out.println(value1);
    }
}

Struts2框架中使用OGNL表示式

Struts2引入了OGNL表示式,主要是在JSP頁面中獲取值棧中的值
具體在Struts2中的只用步驟:

  • 需要先引入Struts2的標籤庫
    <%@ taglib prefix="s" uri="/struts-tags"%>
  • 使用struts2提供的標籤中的標籤
    <s:property value ="'hello'.length()"/>
    在JSP頁面使用OGNL表示式
  • 訪問物件方法
    <s:property value="'hello'.length()">