EL表達(dá)式和JSTL標(biāo)簽庫(帶編碼)

一加缘、EL表達(dá)式(Expression language)

1.EL表達(dá)式的語法:

${表達(dá)式},例如: ${list}

注意:

自帶響應(yīng)功能

2.EL表達(dá)式的使用:

1.EL表達(dá)式獲取請求數(shù)據(jù)

獲取用戶請求數(shù)據(jù)(請求實體)

${param.鍵名} 獲取請求實體中一個鍵一個值的數(shù)據(jù)

${paramValues.鍵名} 獲取請求實體中同鍵不同值的數(shù)據(jù),返回的是String數(shù)組,可以使用角標(biāo)直接獲取

2.獲取請求頭數(shù)據(jù)

${header} 返回所有請求的數(shù)據(jù)乓诽,鍵值對形式

${header["鍵名"]} 返回指定的鍵的請求數(shù)據(jù)

${headerValues["鍵名"]}

3.獲取Cookie數(shù)據(jù)

${Cookie} 獲取所有的Cookie鍵值對 對象

${Cookie.Cookie對象的鍵名} 獲取存儲了指定Cookie數(shù)據(jù)的Cookie對象

${Cookie.Cookie對象的鍵名.name} 獲取存儲了指定Cookie數(shù)據(jù)的Cookie對象的存儲的鍵

${Cookie.Cookie對象的鍵名.value} 獲取存儲了指定Cookie數(shù)據(jù)的Cookie對象的存儲的值

3.EL表達(dá)式獲取作用域數(shù)據(jù)

1.作用域?qū)ο螅?pageContext request session application

2.作用域數(shù)據(jù):我們使用setAttribute方法存儲的數(shù)據(jù)

3.獲认釉椤:

普通的字符串?dāng)?shù)據(jù):${鍵名}

對象數(shù)據(jù):${鍵名.屬性名}

EL表達(dá)式獲取作用域?qū)ο髷?shù)據(jù)

<br />

<%

User user = new User();

user.setUid(1);

user.setUname("zhangsan");

user.setAge(1);

user.setFav("看電影");

request.setAttribute("user", user);

? %>

${user }<br />${user.uid}<br /> ${user.uname}<br />

獲取對象屬性的值${對象名.屬性名 }晴裹,本質(zhì)調(diào)用了該屬性的getter方法

集合數(shù)據(jù):

list集合${鍵名[角標(biāo)]}

<%

List list = new ArrayList();

list.add("list1");

list.add("list2");

request.setAttribute("list", list);

%>

${list}<br />

${list[0]}

list集合${鍵名[角標(biāo)]}

Map集合${map集合作用域存儲的鍵名.map集合存儲的數(shù)據(jù)的鍵名}

4.作用域查找順序,

pageContext

request

session

application

如果找到了則不再查找拍冠,如果找不到尿这,則繼續(xù)查找下一個作用域,如果四個都沒有找到則什么都不表示

5.指定作用域的獲取

${pageScope.鍵名} 指定了獲取pageContext作用域中的數(shù)據(jù)

${requestScope.鍵名} 指定了獲取requestContext作用域中的數(shù)據(jù)

${sessionScope.鍵名} 指定了獲取sessionContext作用域中的數(shù)據(jù)

${applicationScope.鍵名} 指定了獲取applicationContext作用域中的數(shù)據(jù)

? ? ? ? ? ? ? ? <%

? pageContext.setAttribute("str", "hello,pageContext");

? request.setAttribute("str", "hello,requestContext");

? session.setAttribute("str", "hello,sessionContext");

? application.setAttribute("str", "hello,applicationContext");

? %>

? ${str}<br/>

? 從pageContext中取值:${pageScope.str};<br/>

? 從requestContext中取值:${requestScope.str};<br/>

? 從sessionContext中取值:${sessionScope.str};<br/>

? 從applicationContext中取值:${applicationScope.str};<br/>>

4.EL表達(dá)式邏輯運算

1.算術(shù)運算:

+庆杜,-射众,*,/在EL表達(dá)式中可以直接進(jìn)行算術(shù)運算

${算術(shù)表達(dá)式} 例如:${1+2}

注意:+表示算術(shù)運算晃财,不能進(jìn)行字符串連接

2.邏輯運算:&& 叨橱! ||

${邏輯表達(dá)式}

3.比較運算:== != > >= < <=

${比較表達(dá)式}

4.三目運算

${條件?值:值}

5.EL表達(dá)式的empty判斷

${empty 鍵名}

作用:

判斷該鍵是否有存儲有效數(shù)據(jù)

二断盛、JSTL標(biāo)簽庫

1罗洗、JSTL學(xué)習(xí)

作用:

在jsp頁面使用其可以非常方便的進(jìn)行數(shù)據(jù)的處理。較與使用java代碼塊方法钢猛,更加簡單伙菜,代碼更加的簡潔易讀。

使用:

核心標(biāo)簽庫

流程:

導(dǎo)入jar包

引入標(biāo)簽庫

<%@ 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>

<%

int age=10;

request.setAttribute("age", age);

%>

等同于

<c:set value="10" var="gae" scope="request"></c:set>

作用:將數(shù)據(jù)存儲到指定的作用域中,默認(rèn)是pageContext作用域

注意:scope的值為 pag request session application

remove標(biāo)簽:

? ? ? ? <c:remove var="要刪除的鍵名" scope="作用域名"></c:remove>

作用:刪除作用域中的數(shù)據(jù)躺翻,默認(rèn)是刪除四個作用域中符合要求的數(shù)據(jù)

注意:使用pageContext.removeAttriute("鍵名")丧叽, 此方法會將四個作用域中的符合要求的數(shù)據(jù)全部刪除

使用pageContext.removeAttriute(String name,int scope)

指明要刪除的作用域中的數(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>

實例:

<c:set value="80" var="score" scope="request"></c:set>

<c:choose>

<c:when test="${score>=90}">優(yōu)秀</c:when>

<c:when test="${score>=80 }">良好</c:when>

<c:when test="${score>=70 }">一般</c:when>

<c:when test="${score>=60 }">及格</c:when>

<c:when test="${score<80 }">不及格</c:when>

</c:choose>?

注意:符合條件后只會執(zhí)行一個分支,其他分支不會執(zhí)行剪芥。

循環(huán)標(biāo)簽:

? <c:foreach>

? ? 循環(huán)體

? </c:foreach>

實例:

<%

List<Employee> li = new ArrayList<Employee>();

li.add(new Employee(1001,"高琪",18,"程序員","30000","5000"));

li.add(new Employee(1002,"高小二",19,"講師","25000","3000"));

li.add(new Employee(1003,"高小松",20,"教授","30000","3000"));

request.setAttribute("li", li);

%>

<c:forEach? items="${li }" var="li" begin="0" end="1">

${li }<br/>

</c:forEach>

屬性:

begin:聲明循環(huán)的開始位置

end:聲明循環(huán)的結(jié)束位置

step:聲明循環(huán)的步長

varStatus:聲明變量記錄循環(huán)狀態(tài) ,例如變量名:i

注意:記錄的數(shù)據(jù)存儲到了作用域中可以直接使用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ù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溉躲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子益兄,更是在濱河造成了極大的恐慌锻梳,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件净捅,死亡現(xiàn)場離奇詭異疑枯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蛔六,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門荆永,熙熙樓的掌柜王于貴愁眉苦臉地迎上來废亭,“玉大人,你說我怎么就攤上這事具钥《勾澹” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵氓拼,是天一觀的道長你画。 經(jīng)常有香客問我,道長桃漾,這世上最難降的妖魔是什么坏匪? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮撬统,結(jié)果婚禮上适滓,老公的妹妹穿的比我還像新娘。我一直安慰自己恋追,他們只是感情好凭迹,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著苦囱,像睡著了一般嗅绸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撕彤,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天鱼鸠,我揣著相機(jī)與錄音,去河邊找鬼羹铅。 笑死蚀狰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的职员。 我是一名探鬼主播麻蹋,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼焊切!你這毒婦竟也來了扮授?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蛛蒙,失蹤者是張志新(化名)和其女友劉穎糙箍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牵祟,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年抖格,在試婚紗的時候發(fā)現(xiàn)自己被綠了诺苹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咕晋。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖收奔,靈堂內(nèi)的尸體忽然破棺而出掌呜,到底是詐尸還是另有隱情,我是刑警寧澤坪哄,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布质蕉,位于F島的核電站,受9級特大地震影響翩肌,放射性物質(zhì)發(fā)生泄漏模暗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一念祭、第九天 我趴在偏房一處隱蔽的房頂上張望兑宇。 院中可真熱鬧,春花似錦粱坤、人聲如沸隶糕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枚驻。三九已至,卻和暖如春株旷,著一層夾襖步出監(jiān)牢的瞬間再登,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工灾常, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留霎冯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓钞瀑,卻偏偏與公主長得像沈撞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雕什,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容