EL元素必須以${開始,以}結束。
EL元素可以出現在模板文本中,也可以出現在jsp標記的屬性中。
1、EL變量范圍:
在EL中訪問變量的值可以直接使用 ${ 變量名 } or ${ sessionScope.username }
規則:默認情況下,JSP引引擎會按照page、request、session、application的范圍搜索user關鍵字,然后將該對象取出,并顯示其對應的成員。如果在以上的范圍中有同名的key關鍵字,這樣就會出現問題,而且讓JSP引擎去搜索所有的范圍,會降低效率。所以,我們需要給出一個范圍,通過以下的方式:
示例 |
含義 |
${pageScope.user.name} |
從page范圍內取出對象 |
${requestScope.user.name} |
從request范圍內取出對象 |
${sessionScope.user.name} |
從session范圍內取出對象 |
${applicationScope.user.name} |
從application范圍內取出對象 |
2、EL關鍵字(16個):
and |
eq |
gt |
ge |
true |
instanceof |
null |
div |
or |
ne |
lt |
not |
false |
le |
empty |
mod |
3、訪問運算符.和[ ]:
EL使用訪問運算符“.“和”[ ]“來存取數據。
訪問運算符“.“通常用于引用一個對象的屬性。例如,訪問person對象的name屬性:
${person.name}在這種情況下,運算符.和[ ]可以相互替換使用。${person[“name“]}。
.和[ ] 也可混合使用${sessionScope。Cart[0].price}
差異:當存取的屬性名包括特殊字符(如“.“或”-“等)
“[ ]“運算符比”.“ 運算符能更好支持動態取值的情況。
4、算術運算:
EL支持通用的算術運算,包括+ - * / %
可以使用div代表除法( / )運算,使用mod代表模( % )運算。
算術運算符的優先級:
- 括號:()
- 負號:-
- 乘、除、模:*,/(或div),%(或mod)
注意:除法中,如果除以0,返回值為無窮大而不是錯誤。
5、關系運算:
EL支持通用的關系運算,包括:= != < > <= >=
也可以使用 eq ne lt gt le ge
EL關系運算的優先順序低于算術運算,關系運算的優先順序是:
1) <,>,<=,>=
2) == ,!=
3) EL中使用條件判斷:
操作 |
描述 |
示例 |
結果 |
==(eq) |
是否相等 |
${5==5} |
True |
!=(ne) |
是否不等 |
${5!=5} |
false |
<(lt) |
是否小于 |
${5<7} |
True |
>(gt) |
是否大于 |
${5>7} |
false |
<=(le) |
是否小于等于 |
${5 le 5} |
true |
>=(ge) |
是否大于等于 |
${5 ge 6} |
false |
l 判斷一個變量是否為空:
例如:${empty param.choice}${empty sessionScope.userName}
6、邏輯運算:與&&、或|| 、非!
優先級低于關系運算符,邏輯運算符之間的優先順序:
1.!(not)
2.&& (and)
3.|| (or)
7、empty運算符
在EL中有一個特殊的運算符empty,如果操作數值為null返回true,或者操作數本身是一個空的容器、空的數組或長度為0的字符串等也返回true。
注:空容器指的是不包含任何元素的容器。空數組表示其大小為0的數組。
8、自動類型轉換
EL支持自動類型轉換。