struts2框架之OGNL表達式概述
阿新 • • 發佈:2018-12-12
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表達式概述