EL表示式主要功能:用於訪pageContext,request,session,application範圍內儲存的資料。
OGNL不僅可以訪問資料,還具有訪問方法,對集合進行操作等功能。
OGNL是什麼?
Object Graphics Navigation Language 物件圖導航語言。主要作用是對一些複雜物件的屬性和方法進行訪問。
OGNL技術可以獨立使用,封裝在ognl.jar開發包中。
2)OGNL工作原理
OGNL工具由三部分構成,分別是
a. OGNL引擎:負責解釋執行OGNL表示式,按表示式區root或map區域尋找資料。
b. Root根物件區域:訪問該區域資料OGNL表示式簡潔方便。適合放置訪問頻繁的物件元素。
c. Map物件儲存區 :訪問該區域需要使用“#key”訪問。適合放置訪問不頻繁的物件元素。
使用時,給OGNL引擎指定一個表示式,該引擎根據表示式去Root區或Map區訪問物件的屬性或方法。
*3)OGNL表示式語法
a.訪問Root物件某個簡單屬性
表示式: "屬性名"
b.訪問Root物件某個陣列或者List集合
表示式:"屬性名[0]"
c.訪問Root物件某個Map集合
表示式:"屬性名.key"或者"屬性名["key"]"
d.訪問Root物件某個複合型別屬性address
表示式: "address.子屬性"
e.訪問Root物件某個複雜屬性 List<Address> addresses
表示式:"addresses[0].子屬性"
f.訪問Root物件的某個屬性的方法
表示式:"屬性名.方法()"
g.支援Java中的表示式和運算子
h.定義一個List常量
表示式:{"A","B","C"}
i.定義一個Map常量
表示式:#{"key1":value1,"key2":value2}
j.訪問靜態常量或方法
表示式:"@包名.型別@常量名或方法"
上述語法如果訪問Map區域一樣使用,只要注意追加"#key".
el表示式是什麼?
一種簡單的計算規則,用於給標籤的屬性賦值,現在,也可以直接輸出。
(1)訪問bean的屬性。
方式一:
${user.name} : 容器會依次從pageContext,request,session,application查詢綁訂名稱為"user"的物件(即呼叫getAttribute方法),找到後,呼叫該物件的getName方法並輸出。如果值為null,會轉換成""輸出;
另外,如果找不到該物件,也會輸出""。
如果要指定查詢範圍,可以使用pageScope,requestScope,sessionScope,applicationScope,比如:${sessionScope.user.name}
方式二:
${user["name"]}
這種方式允許[]裡出現變數或者序號(從0開始,用來訪問陣列中的元素)
(2)進行一些簡單的計算,計算結果可以直接輸出,也可以給標籤的屬性賦值。
1)算術運算: "+","-","*","/","%"。注意"+"只能進行加法操作,不能進行連線操作。
2)關係運算:">",">=","<","<=","==","!="。
3)邏輯運算: "&&","||","!"。
4)empty運算: empty 以下四種情況均為true
空字串 空的集合 值為null 找不到對應的值
(3)訪問請求引數值
${param.age}: 等價與 request.getParameter("age");
${paramValues.city} : 等價與 request.getParameterValues("citys");
El表示式的查詢方式:
el:${pageinfo.totalPage},pageContext->request-->session-->application,拿到pageinfo,呼叫pageinfo的getTotalPage()方法,獲取到值,然後輸出.${pageinfo["totalPage"]}
EL表示式主要功能:用於訪pageContext,request,session,application範圍內儲存的資料。
OGNL不僅可以訪問資料,還具有訪問方法,對集合進行操作等功能。
OGNL是什麼?
Object Graphics Navigation Language 物件圖導航語言。主要作用是對一些複雜物件的屬性和方法進行訪問。
OGNL技術可以獨立使用,封裝在ognl.jar開發包中。
2)OGNL工作原理
OGNL工具由三部分構成,分別是
a. OGNL引擎:負責解釋執行OGNL表示式,按表示式區root或map區域尋找資料。
b. Root根物件區域:訪問該區域資料OGNL表示式簡潔方便。適合放置訪問頻繁的物件元素。
c. Map物件儲存區 :訪問該區域需要使用“#key”訪問。適合放置訪問不頻繁的物件元素。
使用時,給OGNL引擎指定一個表示式,該引擎根據表示式去Root區或Map區訪問物件的屬性或方法。
*3)OGNL表示式語法
a.訪問Root物件某個簡單屬性
表示式: "屬性名"
b.訪問Root物件某個陣列或者List集合
表示式:"屬性名[0]"
c.訪問Root物件某個Map集合
表示式:"屬性名.key"或者"屬性名["key"]"
d.訪問Root物件某個複合型別屬性address
表示式: "address.子屬性"
e.訪問Root物件某個複雜屬性 List<Address> addresses
表示式:"addresses[0].子屬性"
f.訪問Root物件的某個屬性的方法
表示式:"屬性名.方法()"
g.支援Java中的表示式和運算子
h.定義一個List常量
表示式:{"A","B","C"}
i.定義一個Map常量
表示式:#{"key1":value1,"key2":value2}
j.訪問靜態常量或方法
表示式:"@包名.型別@常量名或方法"
上述語法如果訪問Map區域一樣使用,只要注意追加"#key".
el表示式是什麼?
一種簡單的計算規則,用於給標籤的屬性賦值,現在,也可以直接輸出。
(1)訪問bean的屬性。
方式一:
${user.name} : 容器會依次從pageContext,request,session,application查詢綁訂名稱為"user"的物件(即呼叫getAttribute方法),找到後,呼叫該物件的getName方法並輸出。如果值為null,會轉換成""輸出;
另外,如果找不到該物件,也會輸出""。
如果要指定查詢範圍,可以使用pageScope,requestScope,sessionScope,applicationScope,比如:${sessionScope.user.name}
方式二:
${user["name"]}
這種方式允許[]裡出現變數或者序號(從0開始,用來訪問陣列中的元素)
(2)進行一些簡單的計算,計算結果可以直接輸出,也可以給標籤的屬性賦值。
1)算術運算: "+","-","*","/","%"。注意"+"只能進行加法操作,不能進行連線操作。
2)關係運算:">",">=","<","<=","==","!="。
3)邏輯運算: "&&","||","!"。
4)empty運算: empty 以下四種情況均為true
空字串 空的集合 值為null 找不到對應的值
(3)訪問請求引數值
${param.age}: 等價與 request.getParameter("age");
${paramValues.city} : 等價與 request.getParameterValues("citys");
El表示式的查詢方式:
el:${pageinfo.totalPage},pageContext->request-->session-->application,拿到pageinfo,呼叫pageinfo的getTotalPage()方法,獲取到值,然後輸出.${pageinfo["totalPage"]}