EL表示式學習筆記
阿新 • • 發佈:2020-12-30
技術標籤:筆記
EL表示式學習筆記
EL全稱:Expression Language)。使用EL表示式主要是為了簡化Jsp的程式碼,EL表示式可以替代jsp頁面中的jsp指令碼程式碼的資料獲取、條件判斷等功能。
1.從作用域中獲取資料
1.1使用el表示式獲取儲存在作用域中的資料
<html> <head> <title>Title</title> </head> <body> <!-- 先使用jsp程式碼向session作用域中存入一對資料,用於測試 --> <% session.setAttribute("key","aaa"); %> <!-- 使用jsp程式碼獲取作用域中的資料並顯示在頁面上 --> jsp:<%=session.getAttribute("key")%> <br> <!-- el表示式的獲取作用域中的資料並顯示在頁面上 --> el表示式:${key} </body> </html>
執行後頁面顯示:
效果是一樣的,不過這裡el表示式更簡潔。
1.2使用el表示式獲取儲存在作用域中的物件
<html> <head> <title>Title</title> </head> <body> <% //先建立一個Emp類的物件,並存儲在session作用域中 Emp emp =new Emp(); emp.setName("張三"); emp.setSex("男"); session.setAttribute("emp",emp); %> </body> </html>
使用jsp程式碼獲取上面的emp物件的資訊:
<%
//jsp程式碼獲取session作用域中的emp物件
Object object = session.getAttribute("emp");
//獲取到的是Object型別,這裡轉型為Emp
Emp emp1 =(Emp)object;
%>
<%-- 獲取物件的資訊並在頁面上顯示 --%>
jsp:<%=emp1.getName()%>
使用el表示式獲取emp物件的資訊:
<%--使用el表示式獲取作用域中key為emp的物件,裡面的name值--%> el表示式:${emp.name}
如上所示,要想在作用域中獲取emp物件裡的name屬性,需要emp.name,這裡其實是呼叫了emp物件的getter方法
public class Emp {
private String name;
private String sex;
/*就是下面這個*/
public String getName() {
return name;
}
public String getSex() {
return sex;
}
...
}
如果沒設定getter方法,那麼el表示式用emp.name這樣的方式獲取會出現異常。
不同之處:當el表示式獲取失敗時,會不顯示,而jsp程式碼會顯示null,如下
el表示式:${name}
<br>
jsp:<%=session.getAttribute("name")%>
頁面顯示:
1.3el表示式搜尋作用域的順序
當四個域有相同key的資料時:
<%
pageContext.setAttribute("key","pageContext");
request.setAttribute("key","request");
session.setAttribute("key","session");
application.setAttribute("key","application");
%>
${key}
頁面顯示:pageContext
使用el表示式會優先從擁有該key的作用域最小的那個獲取。
2.el表示式中的運算子
幾個常用的運算子:
運算子 | 描述 |
---|---|
== 或 eq | 判斷是否相等 |
> 或 gt | 判斷是否大於 |
< 或 lt | 判斷是否小於 |
empty | 判斷是否為空 |
! 或 not | 非 |
使用演示:
${empty emp} //emp為空則返回true
${not empty emp} //emp不為空則返回true
${emp == null} //emp為null返回true
! 或 not | 非 |
使用演示:
${empty emp} //emp為空則返回true
${not empty emp} //emp不為空則返回true
${emp == null} //emp為null返回true