EL表達式與JSTL標籤庫總結

2020-08-13 13:31:12

一、EL 表達式

1、什麼是 EL 表達式?

  • EL 表達式的全稱是:Expression Language。是表達式語言

  • EL 表達式的什麼作用:EL 表達式主要是代替 jsp 頁面中的表達式指令碼在 jsp 頁面中進行數據的輸出。

  • 因爲 EL 表達式在輸出數據的時候,要比 jsp 的表達式指令碼要簡潔很多。

    EL 表達式的格式是:${ 表達式 }

    EL 表達式在輸出 null 值的時候,輸出的是空串。jsp 表達式指令碼輸出 null 值

的時候,輸出的是 null 字串。

2、搜尋域數據的順序

EL 表達式主要是在 jsp 頁面中輸出數據。 主要是輸出域物件中的數據。

當四個域中都有相同的 key 的數據的時候,EL 表達式會按照四個域的從小到大的順序去進行搜尋,找到就輸出。

3、EL 表達式輸出 Bean

輸出Bean的普通屬性、陣列屬性、List集合屬性、map 集合屬性

4、運算

語法:${ 運算表達式 } ,EL 表達式支援如下運算子:

(1)關係運算:大小等於

(2)邏輯運算:與或非

(3)算術運算:加減乘除取餘

(4)empty 運算

empty 運算可以判斷一個數據是否爲空,如果爲空,則輸出 true,不爲空輸出 false。

以下幾種情況爲空:

1、值爲 null 值的時候,爲空

2、值爲空串的時候,爲空

3、值是 Object 型別陣列,長度爲零的時候

4、list 集合,元素個數爲零

5、map 集合,元素個數爲零

(5)三元運算

表達式 1?表達式 2:表達式 3

如果表達式 1 的值爲真,返回表達式 2 的值,如果表達式 1 的值爲假,返回表達式 3 的值。

(6)「.」點運算 和 [ ] 中括號運算子

.點運算,可以輸出 Bean 物件中某個屬性的值。

[ ] 中括號運算,可以輸出有序集閤中某個元素的值。

並且 [ ] 中括號運算,還可以輸出 map 集閤中 key 裡含有特殊字元的 key 的值。

5、EL 表達式的 11 個隱含物件

EL 個達式中 11 個隱含物件,是 EL 表達式中自己定義的,可以直接使用。

(1)EL 獲取四個特定域中的屬性

  • pageScope ====== pageContext 域
  • requestScope ====== Request 域
  • sessionScope ====== Session 域
  • applicationScope ====== ServletContext 域

(2)pageContext 物件的使用

(3) EL 表達式其他隱含物件的使用

param Map<String,String> 它可以獲取請求參數的值

paramValues Map<String,String[]> 它也可以獲取請求參數的值,獲取多個值的時候使用。

header Map<String,String> 它可以獲取請求頭的資訊

headerValues Map<String,String[]> 它可以獲取請求頭的資訊,它可以獲取多個值的情況

cookie Map<String,Cookie> 它可以獲取當前請求的 Cookie 資訊

initParam Map<String,String> 它可以獲取在 web.xml 中設定的 上下文參數

二、JSTL 標籤庫

JSTL 標籤庫 全稱是指 JSPStandardTagLibrary JSP 標準標籤庫。是一個不斷完善的開放原始碼的 JSP 標 签庫。

EL 表達式主要是爲了替換 jsp 中的表達式指令碼,而標籤庫則是爲了替換程式碼指令碼。這樣使得整個 jsp 頁面 變得更佳簡潔

1、JSTL 標籤庫的使用步驟

(1)先匯入 jstl 標籤庫的 jar 包。

(2)第二步,使用 taglib 指令引入標籤庫。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

2、core 核心庫使用

(1)< c:set />(很少使用)

作用:set 標籤可以往域中儲存數據

<c:set scope="session" var="abc" value="abcValue"/>

(2) < c:if />

作用:if 標籤用來做 if 判斷。

<c:if test="${ 12 == 12 }"> <h1>12 等於 12</h1> </c:if>

(3) < c:choose >< c:when >< c:otherwise >

作用:多路判斷。跟 switch…case…default 非常接近

<c:choose> 
    <c:when test="${requestScope.height > 160}"> 
        <h3>大於 160</h3> 
    </c:when> 
    <c:when test="${requestScope.height > 150}"> 
        <h3>大於 150</h3> 
    </c:when> 
    <c:when test="${requestScope.height > 140}">
        <h3>大於 140</h3> 
    </c:when>
    <c:otherwise> 其他小於 140 </c:otherwise> 
</c:choose>

(4)< c:forEach />

作用:遍歷輸出使用。

① 遍歷 1 到 10,輸出

<table border="1">
    <c:forEach begin="1" end="10" var="i">
        <tr>
            <td>第${i}行</td>
        </tr>
    </c:forEach>
</table>

② 遍歷 Object 陣列

<%
request.setAttribute("arr", new String[]{"18610541354","18688886666","18699998888"});
%>
<c:forEach items="${ requestScope.arr }" var="item">
    ${ item } <br>
</c:forEach>

③ 遍歷 Map 集合

<%
Map<String,Object> map = new HashMap<String, Object>(); 
map.put("key1", "value1"); 
map.put("key2", "value2"); 
map.put("key3", "value3");  
%> 
<c:forEach items="${ requestScope.map }" var="entry"> 
    <h1>${entry.key} = ${entry.value}</h1> 
</c:forEach>

④ 遍歷 List 集合

list 中存放 Student 類,有屬性:編號,使用者名稱,密碼,年齡,電話資訊

<c:forEach begin="2" end="7" step="2" varStatus="status" items="${requestScope.stus}" var="stu"> 
    <tr> 
        <td>${stu.id}</td>
        <td>${stu.username}</td>
        <td>${stu.password}</td>
        <td>${stu.age}</td>
        <td>${stu.phone}</td>
        <td>${status.step}</td>
    </tr>
</c:forEach>