一、EL表達式
1.EL表達式的語法:
${表達式}
注意:
自帶響應功能
2.EL表達式的使用:
1.EL表達式獲取請求數據
獲取用戶請求數據(請求實體)
${param.鍵名} 獲取請求實體中一個鍵一個值的數據
${paramValues.鍵名} 獲取請求實體中同鍵不同值的數據,返回的是String數組,可以使用角標直接獲取
2.獲取請求頭數據
${header}? 返回所有請求的數據,鍵值對形式
${header["鍵名"]} 返回指定的鍵的請求數據
${headerValues["鍵名"]}
? ? 3.獲取Cookie數據
${Cookie}? 獲取所有的Cookie鍵值對 對象
${Cookie.Cookie對象的鍵名} 獲取存儲了指定Cookie數據的Cookie對象
${Cookie.Cookie對象的鍵名.name} 獲取存儲了指定Cookie數據的Cookie對象的存儲的鍵
${Cookie.Cookie對象的鍵名.value} 獲取存儲了指定Cookie數據的Cookie對象的存儲的值
3.EL表達式獲取作用域數據
1.作用域對象: pageContext request session application
2.作用域數據:我們使用setAttribute方法存儲的數據
3.獲取:
? 普通的字符串數據:${鍵名}
對象數據:${鍵名.屬性名}
集合數據:
list集合${鍵名[角標]}
Map集合${map集合作用域存儲的鍵名.map集合存儲的數據的鍵名}
4.作用域查找順序,
page
request
session
application
如果找到了則不再查找,如果找不到,則繼續查找下一個作用域,如果四個都沒有找到則什么都不表示
5.指定作用域的獲取
${pageScope.鍵名}? 指定了獲取pageContext作用域中的數據
${requestScope.鍵名}? 指定了獲取requestContext作用域中的數據
${sessionScope.鍵名}? 指定了獲取sessionContext作用域中的數據
${applicationScope.鍵名}? 指定了獲取applicationContext作用域中的數據
4.EL表達式邏輯運算
1.算術運算:
+,-,*,/在EL表達式中可以直接進行算術運算
${算術表達式} 例如:${1+2}
注意:+表示算術運算,不能進行字符串連接
2.邏輯運算:&&? ! ||
${邏輯表達式}
3.比較運算:==? != >? >=? <? <=
${比較表達式}
4.三目運算
${條件?值:值}
5.EL表達式的empty判斷
${empty 鍵名}
作用:
判斷該鍵是否有存儲有效數據
二、JSTL標簽庫
1、JSTL學習
作用:
在jsp頁面使用其可以非常方便的進行數據的處理。較與使用java代碼塊方法,更加簡單,代碼更加的簡潔易讀。
使用:
核心標簽庫
流程:
導入jar包
引入標簽庫
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
內容:
基本標簽
out標簽:
<c:out value="${表達式}" default="默認值"></c:out>
作用:結合EL表達式將數據響應給瀏覽器 ,如果EL表達式沒有收到數據則可以使用dafault屬性聲明默認值。
set標簽:
<c:set value ="數據" var="鍵名" scope="作用域名"></c:set>
作用:將數據存儲到指定的作用域中,默認是pageContext作用域
注意:
scope的值為 pag request session application
remove標簽:
<c:remove var="要刪除的鍵名" scope="作用域名"></c:remove>
作用:刪除作用域中的數據,默認是刪除四個作用域中符合要求的數據
注意:
使用pageContext.removeAttriute("鍵名"), 此方法會將四個作用域中的符合要求的數據全部刪除
使用pageContext.removeAttriute(String name,int scope)
指明要刪除的作用域中的數據 scope的值為 1pageContext,2request ,3 session,4 application
使用request.removeAttibute("鍵名") 刪除當前作用域符合要求的數據
使用session.removeAttibute("鍵名") ? 刪除當前作用域符合要求的數據
使用application.removeAttibute("鍵名") 刪除當前作用域符合要求的數據
邏輯標簽:
單分支判斷標簽:<c:if test="${表達式}"數據></c:if>
作用:可以根據EL表達式進行一定程度的單分支邏輯判斷式。
注意:
test屬性中書寫的是EL表達式,或者說是EL表達式的邏輯表達式。
該標簽只能進行EL表達式相關的邏輯判斷。不能進行EL表達式不能獲取的數據的邏輯處理
<c:set var="a" value="12"></c:set>
<c:if test="${a>8}">
<b>今天天氣真好,適合學習2</b>
</c:if>
該標簽只能進行EL表達式相關的邏輯判斷。不能進行EL表達式不能獲取的數據的邏輯處理
多分支判斷標簽:
<c:choose>
<c:when test="${表達式}"></c:when>
<c:when test="${表達式}"></c:when>
..
<c:otherwise></c:otherwise>
</c:choose>
注意:
符合條件后只會執行一個分支,其他分支不會執行。
循環標簽:
<c:foreach>
循環體
</c:foreach>
屬性:
begin:聲明循環的開始位置
end:聲明循環的結束位置
step:聲明循環的步長
varStatus:聲明變量記錄循環狀態 ,例如變量名:i
注意:記錄的數據存儲到了作用域中可以直接使用El表達式進行獲取
示例:? ${i.index}? 獲取當次循環的下標
? ${i.count}? 獲取當次循環的次數
? ${i.first}? 判斷是否是第一次循環
? ${i.last} ? ? 判斷是否是最后一次循環
items:聲明要遍歷的數據,可以是集合和數組等
注意:要使用EL表達式來獲取
var:聲明變量記錄每次遍歷的結果。可以做循環體中使用EL表達式獲取遍歷出來的數據