1. 程式人生 > >struts2框架之OGNL表示式概述

struts2框架之OGNL表示式概述

1. OGNL是Object Graphic Navigation Language(物件圖導航語言)的縮寫
    * 所謂物件圖,即以任意一個物件為根,通過OGNL可以訪問與這個物件關聯的其它物件
    * 通過它簡單一致的表示式語法,可以存取物件的任意屬性,呼叫物件的方法,遍歷整個物件的結構圖,實現欄位型別轉化等功能。它使用相同的表示式去存取物件的屬性

2. Struts2框架使用OGNL作為預設的表示式語言(OGNL可以在struts2框架中使用,也可以單獨使用)表示式語言用於獲取jsp頁面資料
    * OGNL是一種比EL強大很多倍的語言
    * xwork提供 OGNL表示式
    * ognl-3.0.5.jar
struts2已經將OGNL合併到它的裡面。
3. OGNL 提供五大類功能 * 支援物件方法呼叫 * 支援類靜態的方法呼叫和值訪問 * 訪問OGNL上下文(OGNL context)和ActionContext * 支援賦值操作和表示式串聯 * 操作集合物件
4. 測試的程式碼
    // 訪問物件的方法
    @Test
    public void run1() throws OgnlException{
    //使用ongl必須先要獲取ognl的上下文物件 OgnlContext context = new OgnlContext(); // 獲取物件的方法 Object obj = Ognl.getValue("'helloworld'.length()", context, context.getRoot());//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); }