一、OGNL概述
1、什麼是OGNL
對象導航圖語言(Object Graph Navigation Language),簡稱OGNL,是應用於Java中的一個開源的表達式語言(Expression Language),它被集成在Struts2等框架中,作用是對數據進行訪問,它擁有類型轉換、訪問對象方法、操作集合對象等功能。
(1)OGNL:對象導航圖語言,比EL表達式要強大很多倍的語言。
EL:只能從域對象當中獲取數據,從EL的11個對象當中獲取對象。${ }
OGEL:調用對象的方法,獲取Struts2的值棧的數據。OGNL其實是第三方的表達式語言。
2、爲什麼學習OGNL
OGNL(Object-Graph Navigation Language),
可以方便地操作對象屬性的開源表達式語言,使頁面更簡潔;
支持運算符(如±*/),比普通的標誌具有更高的自由度和更強的功能;
Struts 2默認的表達式語言是OGNL,原因是它相對其它表達式語言具有下面幾大優勢:
支持對象方法調用,如xxx.doSomeSpecial();
支持類靜態的方法調用和值訪問,表達式的格式爲@[類全名(包括包路徑)]@[方法名 | 值名],例如:
@java.lang.String@format(‘foo %s’, ‘bar’)或@tutorial.MyConstant@APP_NAME;
支持賦值操作和表達式串聯,
如price=100, discount=0.8, calculatePrice(price*discount),這個表達式會返回80;
訪問OGNL上下文(OGNL context)和ActionContext;
操作集合對象。
可以直接new一個對象
3、OGNL使用的要素
1、表達式:
2、根對象:(Root)
3、Context對象:
二、OGNL在Struts2環境當中的使用(入門)
1、訪問對象的方法(引入Struts2的標籤)
創建JSP頁面在頁面當中
2、訪問對象的靜態方法
靜態方法訪問在Struts2當中默認是關閉的,需要開啓常量。(也就是說默認情況下是不允許靜態方法訪問)
而Struts2當中的靜態常量在
(1)手動開啓靜態方法訪問在struts.xml
(2)在JSP當中通過標籤的property來獲取對象的靜態方法
在瀏覽器當中訪問