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

struts2框架之OGNL表達式概述

except row 通過 結構 strong str ati spa 獲取對象

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); }
 

struts2框架之OGNL表達式概述