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