JSTL
1.jstl的概述
- apache公司提供的悲立,依賴EL
- 使用jstl需要導(dǎo)入jstl1.2.jar
- jstl標(biāo)簽庫——四大庫
core:核心標(biāo)簽庫(重點(diǎn))
fmt:格式化標(biāo)簽庫
sql:數(shù)據(jù)庫標(biāo)簽庫(過時(shí))
xml:xml標(biāo)簽庫(過時(shí))
2.導(dǎo)入標(biāo)簽庫
- jar包
- 在jsp頁面中:<%@taglib prefix=”前綴” uri=”路徑”%>
3.core標(biāo)簽庫常用標(biāo)簽(c標(biāo)簽)
(1)out和set - <c:out > - - - - 輸出aaa字符串常量
value:可以是字符串常量亡驰,也可以是EL表達(dá)式
default:當(dāng)要輸出的內(nèi)容為null時(shí)捞附,會(huì)輸出default里面指定的值
escapeXml:默認(rèn)值為true诞仓,表示轉(zhuǎn)義
<%
request.setAttribute("code", "<script>alert();</script>;");
%>
<c:out value="${code}"></c:out>
* <c:set>:設(shè)置(創(chuàng)建域的屬性)
var:變量名
value:變量值曙蒸,可以時(shí)EL表達(dá)式
scope:域解藻,默認(rèn)式page损痰,可以選擇其他域
<c:set var="code" value="<script>alert('hello')</script>;"></c:set>
<c:out value="${code}" escapeXml="ture"></c:out>
(2)remove
- <remove>:刪除域變量
var:變量名
scope:如果不給出scope,表示刪除所有域中的該名稱變量审磁,如果指定了域谈飒,那么就只刪除該域中的變量
(3)Url
- value:指定一個(gè)路徑,它會(huì)在路徑前面自動(dòng)添加項(xiàng)目名态蒂。
- <c:url value=”/index.jsp”/>杭措,它會(huì)輸出/JSTL/index.jsp
- 子標(biāo)簽:<c:param>,用來給url后面添加參數(shù)钾恢,例如:
<c:url value=”/index.jsp”>
<c:param name=”username” value=”張三”/>
</c:url>
結(jié)果為:/JSTL/index.jsp?username=%ED%2C%3F%6B%AC%3F
- var:指定變量名手素,一旦添加了這個(gè)屬性,那么url標(biāo)簽就不會(huì)再輸出到頁面瘩蚪,而是把生成的url保存到域中泉懦。
- scope:它與var一起使用,用來保存url到指定域中募舟。
(4)if:對應(yīng)java中的if語句 - <c:if test=”布爾類型”>....</c:if>祠斧,當(dāng)test為真時(shí),執(zhí)行標(biāo)簽體內(nèi)容
(5)choose:它對應(yīng)java中的if/else if/ ... /else - 例如:
<c:choose>
<c:when test=””> ... </c:when>
<c:when test=””> ... </c:when>
<c:when test=””> ... </c:when>
...
<c:otherwise> ... </c:otherwise>
</c:choose>
(6)forEach
它用來循環(huán)遍歷數(shù)組拱礁、集合琢锋,還可以用來計(jì)數(shù)方式來循環(huán)
- 計(jì)數(shù)方式:
Java:
for(int i = 1; i <= 10; i++){
System.out.println(i);
}
等同于:
<c:forEach var=”i” begin=”1” end=”10”>
${i}
</c:forEach>
屬性介紹:
- var:循環(huán)變量
- begin:設(shè)置循環(huán)變量從幾開始
- end:設(shè)置循環(huán)變量到幾結(jié)束
- step:設(shè)置步長辕漂,等同于Java中的i++或i+2.默認(rèn)為1
輸出集合和數(shù)組
數(shù)組:
<% String[] strs = {one,two}%>
<c:forEach items=”${strs}” var=”str”>
${str}<br/>
</c:forEach>
等同于java中的增強(qiáng)for
for(String str : strs){
......
}
屬性介紹:
- items:指定要循環(huán)誰,它可以是一個(gè)數(shù)組或一個(gè)集合
- var:把數(shù)組或集合中的每個(gè)元素賦值給var指定的變量吴超。
<c:forEach items=”{vs.index}
// 輸出遍歷數(shù)組或者集合的下標(biāo)
{vs.first}
// 返回布爾類型钉嘹,是否是第一個(gè)元素
{vs.current}
// 當(dāng)前對象鲸阻,相當(dāng)于輸出
</c:forEach>
4.fmt標(biāo)簽庫——它是格式化庫
<fmt:formatData value=”” pattern=””> - value:指定一個(gè)Data類型的變量
- pattern:用來指定輸出的模板跋涣,例如:yyyy-MM-dd HH:mm:ss
<fmt:formatNumber value=”num1” pattern=”0.00”>
- 保留小數(shù)點(diǎn)后兩位,它會(huì)四舍五入鸟悴,不足兩位用0補(bǔ)位
<fmt:formatNumber value=”num1” pattern=”#.##”> - 保留小數(shù)點(diǎn)后兩位陈辱,它會(huì)四舍五入,不補(bǔ)位