EL 是 Expression Language 的簡稱,意思是表達式語言。它是JSP 2.0 中引入的一種計算和輸出Java對象的簡單語言,爲不熟悉Java語言頁面開發的人員提供了一種開發JSP應用程序的新途徑。
- 使用斜槓“\”符號:即在$前加\ eg:\${username} 該方法適合只是禁用頁面的一個或幾個EL表達式的情況
- 使用JSP的page指令:<%@ page isELlgnored = "true|false" %> 如果值爲true則忽略頁面中的EL表達式,否則將解析頁面中的EL表達式。該方法適用於禁用一個頁面中的EL表達式
- 在web.xml文件中配置<el-lgnored>元素:該方法適用於禁用Web應用中所有的JSP頁面。
配置代碼如下:
1
2
3
4
5
6
|
< jsp-config > < jsp-property-group > < url-parttrn >
*.jsp</ url-pattern > < el-lgnored >true</ el-lgnored > <!--將此處設爲false,表示使用EL表達式--> </ jsp-property-group > </ jsp-config > |
EL表達式的基本語法
- 在EL表達式中可以獲取命名空間(PageContext 對象,它是頁面中所有其他內置對象的最大範圍的集成對象,通過它可以訪問其他內置對象)。
- EL表達式不僅可以訪問一般變量,而且可以訪問JavaBean中的屬性以及嵌套屬性和集合對象。
- 在EL表達式中可以執行關係運算,邏輯運算和算術運算等。
- 擴展函數可以與Java類的靜態方法進行映射。
- 在表達式中可以訪問JSP的作用域(request,session,application和page)。
- EL表達式可以與JSTL結合使用,也可以與JavaScript語句結合使用。
範圍 | 前綴 | 舉例說明 |
---|---|---|
page | pageScope | 例如:${pageScope.username}表示在page範圍內查找變量username,若找不到直接返回null |
request | requestScope | 例如:${requestScope.username}表示在request範圍內查找變量username,若找不到直接返回null |
session | sessionScope | 例如:${sessionScope.username}表示在session範圍內查找變量username,若找不到直接返回null |
application | applicationScope | 例如:${applicationScope.username}表示在application範圍內查找變量username,若找不到直接返回null |
- 存取數據運算符:獲取對象屬性。
- 算術運算符
- 關係運算符
- 邏輯運算符
- empty運算符
- 條件運算符
- 數組元素的獲取
- List集合元素的獲取
- Map集合元素的獲取
1
2
3
4
5
|
<% String[]
arrFruit={"蘋果","西瓜","芒果","荔枝"};//定義數組 request.setAttribute("fruit",arrFruit);//將數組保存到request對象中 %> ${requestScope.fruit[1]} <!--輸出數組中的第二個元素--> |
1
2
3
4
5
6
7
8
|
<% List
list=new ArrayList(); list.add("蘋果"); list.add("西瓜"); list.add("芒果"); session.setAttribute("fruitList",list);//將List集合保存到session對象中 %> ${sessionScope.fruitList[1]} |
Map集合元素的獲取
1
2
3
4
5
6
7
8
|
<% Map
map=new HashMap(); map.put("1","蘋果"); map.put("2","西瓜"); map.put("3","芒果"); application.setAttribute("fruitMap",map);//將Map集合保存到application對象中 %> ${applicationScope.fruitMap[1]} |
算術運算符
運算符 | 功能 | 舉例說明 |
---|---|---|
+ | 加 | ${6+1},返回值爲7 |
- | 減 | ${7-1},返回值爲6 |
* | 乘 | ${23.5*10},返回值爲235.0 |
/或div | 除 | ${16/2}或${16 div 2},返回值爲8.0 |
%或mod | 取餘 | ${15%4}或者${15 mod 4},返回值爲3 |
運算符 | 功能 | 舉例說明 |
---|---|---|
=或eq | 等於 | ${10=10}或${10 eq 10},返回true ${"A"="a"}或${"A" eq "a"},返回false |
!=或ne | 不等於 | ${10!=10}或${10 ne 10},返回fasle ${"A"!="A"}或${"A" ne "A"},返回false |
<或lt | 小於 | ${5<3}或${5 lt 3},返回false ${"A"<"B"}或${"A" lt "B"},返回true |
>或gt | 大於 | ${5>3}或${5 gt 3},返回true ${"A">"B"}或${"A" gt "B"},返回false |
<=或le | 小於等於 | ${3<=4}或${3 le 4},返回true ${"A"<="A"}或${"A" le "A"},返回true |
>=或ge | 大於等於 | ${3>=4}或${3 ge 4},返回fasle ${"A">="B"}或${"A" ge "B"},返回false |
在使用EL表達式關係運算符時,不能寫成如下形式:
邏輯運算符
- "&&"或and運算符
- "||"或or運算符
- "!"或not運算符
empty運算符也可以與not運算符結合使用,用於確定一個對象或變量是否爲空。
運算符的優先級
and | eq | gt | true | instanceof | div | or | ne |
le | false | lt | empty | mod | not | ge | null |
EL表達式中的隱含對象
java.util.Map
隱含對象 | 對象類型 | 說明 | |
---|---|---|---|
頁面上下文對象 | pageContext | java.servlet.jsp.PageContext | 用於訪問JSP內置對象 |
param | java.util.Map | 包含頁面所有參數的名稱和對應值的集合 | |
paramValues | java.util.Map | 包含頁面所有參數的名稱和對應多個值的集合 | |
訪問環境信息的隱含對象 | header | java.util.Map | 包含每個header名和值的集合 |
headerValues | java.util.Map | 包含每個header名和可能的多個值的集合 | |
cookie | java.util.Map | 包含每個cookie名和值的集合 | |
initParam | java.util.Map | 包含Servlet上下文初始參數名和對應值的集合 | |
pageScope | java.util.Map | 包含page(頁面)範圍內的屬性值的集合 | |
訪問作用域範圍的隱含對象 | requestScope | java.util.Map | 包含request(請求)範圍內的屬性值的集合 |
sessionScope | java.util.Map | 包含session(會話)範圍內的屬性值的集合 | |
java.util.Map | 包含application(應用)範圍內的屬性值的集合 |
1
2
3
4
|
< context-param > < param-name >author</ param-name > < param-value >zoe</ param-value > </ context-param > |
應用EL表達式獲取該參數
${initParam.author}