1. 程式人生 > 其它 >EL表示式學習筆記

EL表示式學習筆記

技術標籤:筆記

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