EL(Expression Language) 是為了使JSP寫起來更加簡單世囊。表達(dá)式語言的靈感來自于 ECMAScript 和 XPath 表達(dá)式語言文搂,它提供了在 JSP 中簡化表達(dá)式的方法,讓Jsp的代碼更加簡化旬渠。
基本語法如下:
${表達(dá)式}
EL 表達(dá)式類似于 JSP 表達(dá)式 <%=表達(dá)式%>邮屁,EL 語句中的表達(dá)式值會(huì)被直接送到瀏覽器顯示姆涩,通過 page 指令的 isELIgnored 屬性來說明是否支持 EL 表達(dá)式。
當(dāng) isELIgnored 屬性值為 false 時(shí)卫旱,JSP 頁面可以使用 EL 表達(dá)式人灼,當(dāng) isELIgnored 屬性值為 true 時(shí),JSP 頁面不能使用 EL 表達(dá)式顾翼。isELIgnored 屬性值默認(rèn)為 false投放。
EL 的語法簡單、使用方便适贸,它以${
開始灸芳、以}
結(jié)束涝桅。
1. “[]”與“.”運(yùn)算符
EL 使用“[]”和“.”運(yùn)算符來訪問數(shù)據(jù),主要使用 EL 獲取對(duì)象的屬性烙样,包括獲取 JavaBean 的屬性值冯遂、獲取數(shù)組中的元素以及獲取集合對(duì)象中的元素。
對(duì)于 null 值直接以空字符串顯示谒获,而不是 null蛤肌,在運(yùn)算時(shí)也不會(huì)發(fā)生錯(cuò)誤或空指針異常,所以在使用 EL 訪問對(duì)象的屬性時(shí)不需要判斷對(duì)象是否為 null 對(duì)象批狱,這樣就為編寫程序提供了方便裸准。
1)獲取 JavaBean 的屬性值
假設(shè)在 JSP 頁面中有這樣一句話:
<%=user.getAge()%>
那么可以使用 EL 獲取 user 對(duì)象的屬性 age,代碼如下:
${user.age}
或
${user["age"]}
其中赔硫,點(diǎn)運(yùn)算符前面為 JavaBean 的對(duì)象 user炒俱,后面為該對(duì)象的屬性 age,表示利用 user 對(duì)象的 getAge 方法取值并顯示在網(wǎng)頁上爪膊。
2)獲取數(shù)組中的元素
假設(shè)在 Controller 或 Servlet 中有這樣一段話:
String dogs[] = {"lili","huahua","guoguo"};
request.setAttribute("array",dogs);
那么在對(duì)應(yīng)視圖 JSP 中可以使用 EL 取出數(shù)組中的元素侨赡,代碼如下:
${array[0]}
${array[1]}
${array[2]}
3)獲取集合對(duì)象中的元素
假設(shè)在 Controller 或 Servlet 中有這樣一段話:
ArrayList<UserBean> users = new ArrayList<UserBean>();
UserBean ub1 = new UserBean("zhang",20);
UserBean ub2 = new UserBean("zhao",50);
users.add(ub1);
users.add(ub2);
request.setAttribute("array",users);
其中厌均,UserBean 有兩個(gè)屬性 name 和 age糜烹,那么在對(duì)應(yīng)視圖 JSP 頁面中可以使用 EL 取出 UserBean 中的屬性隐解,代碼如下:
${array[0].name} ${array[0].age}
${array[1].name} ${array[1].age}
2. 算術(shù)運(yùn)算符
在 EL 表達(dá)式中有 5 個(gè)算術(shù)運(yùn)算符荧库,如表 1 所示敬特。
表 1 EL的算術(shù)運(yùn)算符
算術(shù)運(yùn)算符 | 說 明 | 示 例 | 結(jié) 果 |
---|---|---|---|
+ | 加 | ${13+2} | 15 |
- | 減 | ${13-2} | 11 |
* | 乘 | ${13*2} | 26 |
/(或div) | 除 |
|
6.5 |
%(或mod) | 取模(求余) |
|
1 |
3. 關(guān)系運(yùn)算符
在 EL 表達(dá)式中有 6 個(gè)關(guān)系運(yùn)算符污秆,如表 2 所示拍屑。
表 2 EL 的關(guān)系運(yùn)算符
關(guān)系運(yùn)算符 | 說 明 | 示 例 | 結(jié) 果 |
---|---|---|---|
==(或 eq) | 等于 |
|
false |
!=(或 ne) | 不等于 |
|
true |
<(或 lt) | 小于 |
|
false |
>(或gt) | 大于 |
|
true |
<=(或le) | 小于等于 |
|
false |
>=(或ge) | 大于等于 |
|
true |
4. 邏輯運(yùn)算符
在 EL 表達(dá)式中有 3 個(gè)邏輯運(yùn)算符荷辕,如表 3 所示凿跳。
表 3 EL 的邏輯運(yùn)算符
邏輯運(yùn)算符 | 說 明 | 示 例 | 結(jié) 果 |
---|---|---|---|
&&(或and) | 邏輯與 | 如果 A 為 true,B 為 false疮方,則 A && B(或 A and B) | false |
||(或 or) | 邏輯或 | 如果 A 為 true控嗜,B 為 false,則 A ||B(或 A or B) | true |
!(或 not) | 邏輯非 | 如果 A 為 true骡显,則 !A(或 not A) | false |
5. empty 運(yùn)算符
empty 運(yùn)算符用于檢測一個(gè)值是否為 null疆栏,例如變量 A 不存在,則 ${empty A} 返回的結(jié)果為 true惫谤。
6. 條件運(yùn)算符
EL 中的條件運(yùn)算符是“? :”壁顶,例如 ${A ? B:C},如果 A 為 true溜歪,計(jì)算 B 并返回其結(jié)果若专,如果 A 為 false,計(jì)算 C 并返回其結(jié)果蝴猪。