一樟蠕、EL表達(dá)式
1.EL表達(dá)式的語(yǔ)法:
${表達(dá)式}
注意:
自帶響應(yīng)功能
2.EL表達(dá)式的使用:
1.EL表達(dá)式獲取請(qǐng)求數(shù)據(jù)
獲取用戶請(qǐng)求數(shù)據(jù)(請(qǐng)求實(shí)體)
${param.鍵名} 獲取請(qǐng)求實(shí)體中一個(gè)鍵一個(gè)值的數(shù)據(jù)
${paramValues.鍵名} 獲取請(qǐng)求實(shí)體中同鍵不同值的數(shù)據(jù)续扔,返回的是String數(shù)組滴劲,可以使用角標(biāo)直接獲取
2.獲取請(qǐng)求頭數(shù)據(jù)
${header}? 返回所有請(qǐng)求的數(shù)據(jù),鍵值對(duì)形式
${header["鍵名"]} 返回指定的鍵的請(qǐng)求數(shù)據(jù)
${headerValues["鍵名"]}
? ? 3.獲取Cookie數(shù)據(jù)
${Cookie}? 獲取所有的Cookie鍵值對(duì) 對(duì)象
${Cookie.Cookie對(duì)象的鍵名} 獲取存儲(chǔ)了指定Cookie數(shù)據(jù)的Cookie對(duì)象
${Cookie.Cookie對(duì)象的鍵名.name} 獲取存儲(chǔ)了指定Cookie數(shù)據(jù)的Cookie對(duì)象的存儲(chǔ)的鍵
${Cookie.Cookie對(duì)象的鍵名.value} 獲取存儲(chǔ)了指定Cookie數(shù)據(jù)的Cookie對(duì)象的存儲(chǔ)的值
3.EL表達(dá)式獲取作用域數(shù)據(jù)
1.作用域?qū)ο螅?pageContext request session application
2.作用域數(shù)據(jù):我們使用setAttribute方法存儲(chǔ)的數(shù)據(jù)
3.獲取:
? 普通的字符串?dāng)?shù)據(jù):${鍵名}
對(duì)象數(shù)據(jù):${鍵名.屬性名}
集合數(shù)據(jù):
list集合${鍵名[角標(biāo)]}
Map集合${map集合作用域存儲(chǔ)的鍵名.map集合存儲(chǔ)的數(shù)據(jù)的鍵名}
4.作用域查找順序暑椰,
page
request
session
application
如果找到了則不再查找,如果找不到荐绝,則繼續(xù)查找下一個(gè)作用域一汽,如果四個(gè)都沒有找到則什么都不表示
5.指定作用域的獲取
${pageScope.鍵名}? 指定了獲取pageContext作用域中的數(shù)據(jù)
${requestScope.鍵名}? 指定了獲取requestContext作用域中的數(shù)據(jù)
${sessionScope.鍵名}? 指定了獲取sessionContext作用域中的數(shù)據(jù)
${applicationScope.鍵名}? 指定了獲取applicationContext作用域中的數(shù)據(jù)
4.EL表達(dá)式邏輯運(yùn)算
1.算術(shù)運(yùn)算:
+,-低滩,*召夹,/在EL表達(dá)式中可以直接進(jìn)行算術(shù)運(yùn)算
${算術(shù)表達(dá)式} 例如:${1+2}
注意:+表示算術(shù)運(yùn)算,不能進(jìn)行字符串連接
2.邏輯運(yùn)算:&&? 委造! ||
${邏輯表達(dá)式}
3.比較運(yùn)算:==? 戳鹅!= >? >=? <? <=
${比較表達(dá)式}
4.三目運(yùn)算
${條件?值:值}
5.EL表達(dá)式的empty判斷
${empty 鍵名}
作用:
判斷該鍵是否有存儲(chǔ)有效數(shù)據(jù)
二、JSTL標(biāo)簽庫(kù)
1昏兆、JSTL學(xué)習(xí)
作用:
在jsp頁(yè)面使用其可以非常方便的進(jìn)行數(shù)據(jù)的處理枫虏。較與使用java代碼塊方法,更加簡(jiǎn)單爬虱,代碼更加的簡(jiǎn)潔易讀隶债。
使用:
核心標(biāo)簽庫(kù)
流程:
導(dǎo)入jar包
引入標(biāo)簽庫(kù)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
內(nèi)容:
基本標(biāo)簽
out標(biāo)簽:
<c:out value="${表達(dá)式}" default="默認(rèn)值"></c:out>
作用:結(jié)合EL表達(dá)式將數(shù)據(jù)響應(yīng)給瀏覽器 ,如果EL表達(dá)式?jīng)]有收到數(shù)據(jù)則可以使用dafault屬性聲明默認(rèn)值跑筝。
set標(biāo)簽:
<c:set value ="數(shù)據(jù)" var="鍵名" scope="作用域名"></c:set>
作用:將數(shù)據(jù)存儲(chǔ)到指定的作用域中死讹,默認(rèn)是pageContext作用域
注意:
scope的值為 pag request session application
remove標(biāo)簽:
<c:remove var="要?jiǎng)h除的鍵名" scope="作用域名"></c:remove>
作用:刪除作用域中的數(shù)據(jù),默認(rèn)是刪除四個(gè)作用域中符合要求的數(shù)據(jù)
注意:
使用pageContext.removeAttriute("鍵名")曲梗, 此方法會(huì)將四個(gè)作用域中的符合要求的數(shù)據(jù)全部刪除
使用pageContext.removeAttriute(String name,int scope)
指明要?jiǎng)h除的作用域中的數(shù)據(jù) scope的值為 1pageContext,2request ,3 session,4 application
使用request.removeAttibute("鍵名") 刪除當(dāng)前作用域符合要求的數(shù)據(jù)
使用session.removeAttibute("鍵名") ? 刪除當(dāng)前作用域符合要求的數(shù)據(jù)
使用application.removeAttibute("鍵名") 刪除當(dāng)前作用域符合要求的數(shù)據(jù)
邏輯標(biāo)簽:
單分支判斷標(biāo)簽:<c:if test="${表達(dá)式}"數(shù)據(jù)></c:if>
作用:可以根據(jù)EL表達(dá)式進(jìn)行一定程度的單分支邏輯判斷式赞警。
注意:
test屬性中書寫的是EL表達(dá)式妓忍,或者說是EL表達(dá)式的邏輯表達(dá)式。
該標(biāo)簽只能進(jìn)行EL表達(dá)式相關(guān)的邏輯判斷愧旦。不能進(jìn)行EL表達(dá)式不能獲取的數(shù)據(jù)的邏輯處理
<c:set var="a" value="12"></c:set>
<c:if test="${a>8}">
<b>今天天氣真好世剖,適合學(xué)習(xí)2</b>
</c:if>
該標(biāo)簽只能進(jìn)行EL表達(dá)式相關(guān)的邏輯判斷。不能進(jìn)行EL表達(dá)式不能獲取的數(shù)據(jù)的邏輯處理
多分支判斷標(biāo)簽:
<c:choose>
<c:when test="${表達(dá)式}"></c:when>
<c:when test="${表達(dá)式}"></c:when>
..
<c:otherwise></c:otherwise>
</c:choose>
注意:
符合條件后只會(huì)執(zhí)行一個(gè)分支笤虫,其他分支不會(huì)執(zhí)行旁瘫。
循環(huán)標(biāo)簽:
<c:foreach>
循環(huán)體
</c:foreach>
屬性:
begin:聲明循環(huán)的開始位置
end:聲明循環(huán)的結(jié)束位置
step:聲明循環(huán)的步長(zhǎng)
varStatus:聲明變量記錄循環(huán)狀態(tài) ,例如變量名:i
注意:記錄的數(shù)據(jù)存儲(chǔ)到了作用域中可以直接使用El表達(dá)式進(jìn)行獲取
示例:? ${i.index}? 獲取當(dāng)次循環(huán)的下標(biāo)
? ${i.count}? 獲取當(dāng)次循環(huán)的次數(shù)
? ${i.first}? 判斷是否是第一次循環(huán)
? ${i.last} ? ? 判斷是否是最后一次循環(huán)
items:聲明要遍歷的數(shù)據(jù),可以是集合和數(shù)組等
注意:要使用EL表達(dá)式來獲取
var:聲明變量記錄每次遍歷的結(jié)果琼蚯〕甑剩可以做循環(huán)體中使用EL表達(dá)式獲取遍歷出來的數(shù)據(jù)