教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Java培訓(xùn)之JSTL標(biāo)簽庫(kù)介紹

更新時(shí)間:2016年06月29日17時(shí)46分 來(lái)源:傳智播客Java培訓(xùn)學(xué)院 瀏覽次數(shù):

JSTL標(biāo)簽庫(kù)介紹

1.什么是jstl

JSTL(JSP Standard Tag Library,jsp標(biāo)準(zhǔn)標(biāo)簽庫(kù))是Apache對(duì)EL表達(dá)式的擴(kuò)展,也就是說(shuō)JSTL依賴EL表達(dá)式。JSTL是標(biāo)簽語(yǔ)言,使用起來(lái)非常方便。但是它不是jsp內(nèi)置的標(biāo)簽,所以用的時(shí)候需要我們自己導(dǎo)包,以及指定標(biāo)簽庫(kù)。
如果你使用Myeclipse開(kāi)發(fā)javaweb,那么把項(xiàng)目發(fā)布到Tomcat時(shí),你會(huì)發(fā)現(xiàn),Myeclipse會(huì)在當(dāng)前工程的lib目錄下存放jstl的jar包,如果沒(méi)有使用Myeclipse開(kāi)發(fā),那么就需要自己導(dǎo)入這個(gè)jstl的jar包:jstl-1.2.jar。

2.jstl的標(biāo)簽庫(kù)

Jstl標(biāo)簽庫(kù)一共包含了四大標(biāo)簽庫(kù):
l core:核心標(biāo)簽庫(kù),這是我們學(xué)習(xí)的重點(diǎn);
l fmt:格式化標(biāo)簽庫(kù),在這個(gè)標(biāo)簽庫(kù)中,我們只需要學(xué)習(xí)兩個(gè)標(biāo)簽即可;
l sql:數(shù)據(jù)庫(kù)標(biāo)簽庫(kù),這個(gè)標(biāo)簽庫(kù)已經(jīng)過(guò)時(shí),本文檔不再對(duì)其進(jìn)行介紹;
l xml:xml標(biāo)簽庫(kù),這個(gè)標(biāo)簽庫(kù)已經(jīng)過(guò)時(shí),本文檔不再對(duì)其進(jìn)行介紹。

3.導(dǎo)入標(biāo)簽庫(kù)

除了jsp動(dòng)作標(biāo)簽外,使用其他第三方的標(biāo)簽都需要做以下兩件事:
l 導(dǎo)入jar包;
l 在使用標(biāo)簽的jsp頁(yè)面中使用taglib指令導(dǎo)入標(biāo)簽庫(kù)。
例如,在jsp頁(yè)面導(dǎo)入jstl的核心標(biāo)簽庫(kù):
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>,其中:
l prefix="c":指定標(biāo)簽庫(kù)的前綴,這個(gè)前綴可以賦任意的值,但大家都會(huì)在使用core標(biāo)簽庫(kù)時(shí)指定前綴為c;
l uri="http://java.sun.com/jsp/jstl/core":指定標(biāo)簽庫(kù)的uri,它不一定是真實(shí)存在的網(wǎng)址,但它可以讓JSP找到標(biāo)簽庫(kù)的描述文件。

4.core標(biāo)簽庫(kù)常用標(biāo)簽

4.1 out標(biāo)簽
out標(biāo)簽在jsp頁(yè)面使用,格式為:<c:out/>,表示向?yàn)g覽器端輸出。out標(biāo)簽有如下三個(gè)屬性:
l value:表示向?yàn)g覽器輸出的的值,可以是字符串常量,例如:<c:out value=”aaa”/>,也可以是EL表達(dá)式,例如:<c:out value=”${aaa}”/>;
l default:當(dāng)輸出的內(nèi)容為null時(shí),會(huì)輸出default指定的值;
l escapeXml:當(dāng)escapeXml的值為false,表示不會(huì)轉(zhuǎn)義“<”、“>”,這樣就有可能會(huì)受到JavaScript攻擊,值為true時(shí),會(huì)對(duì)以上符號(hào)進(jìn)行轉(zhuǎn)義,它的默認(rèn)值就是true。
下面我們通過(guò)一個(gè)小例子來(lái)練習(xí)使用out標(biāo)簽,如下:
(1)對(duì)web應(yīng)用Example10下的index.jsp頁(yè)面進(jìn)行編輯,主要代碼如例1-1所示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
... ...
<body>
    <%
     //向request域中添加域?qū)傩?br />      request.setAttribute("code", "<script>alert('hello');</script>");
     %>
     <c:out value="${code }" escapeXml="false"></c:out>
</body>
例1-1中,首先導(dǎo)入核心標(biāo)簽庫(kù),然后向request域中存放數(shù)據(jù),存放的數(shù)據(jù)的值為:“<script>alert(‘hello’);</script>“,如果使用out標(biāo)簽輸出時(shí)不對(duì)特殊字符進(jìn)行轉(zhuǎn)義,那么瀏覽器端就會(huì)彈出一個(gè)對(duì)話框。
(2)在瀏覽器端訪問(wèn)index.jsp頁(yè)面,瀏覽器端顯示結(jié)果如圖1-1所示:

圖1-1 瀏覽器顯示結(jié)果
圖1-1中,由于沒(méi)有對(duì)特殊字符進(jìn)行轉(zhuǎn)義所以,瀏覽器在訪問(wèn)時(shí)將value的值當(dāng)做JavaScript腳本輸出,彈出對(duì)話框。
(3)現(xiàn)在將例1-1中,out標(biāo)簽的escapeXml屬性設(shè)置為true,然后再訪問(wèn)該頁(yè)面,瀏覽器顯示結(jié)果如圖1-2所示:

圖1-2 瀏覽器顯示結(jié)果
圖1-2中,out標(biāo)簽將值按原樣輸出。
4.2 set標(biāo)簽
set標(biāo)簽的作用就是設(shè)置域的屬性,其用法格式如:<c:set var=”xxx” value=”xxx” scope=”xxx”/>,其中三個(gè)屬性的作用分別如下:
l var:定義變量的名字;
l value:表示變量的值,可以是EL表達(dá)式;
l scope:表示將設(shè)置的變量存放在哪個(gè)域中,默認(rèn)是page域,可選值為:page,request,session,application。
下面通過(guò)一個(gè)小案例來(lái)練習(xí)如何使用set標(biāo)簽,如下:
(1)在Example10的WebRoot目錄下新建一個(gè)jsp文件,名為set.jsp,主要代碼如例1-2所示:
例1-2 set.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
... ...
<body>
    <c:set var="arr" value="<script>alert('hello');</script>"></c:set>
    <c:out value="${arr}"></c:out>
</body>
例1-2中,<c:set>標(biāo)簽的作用等同于例1-1中的request.setAttribute()方法。
(2)重新啟動(dòng)服務(wù)器,在瀏覽器端訪問(wèn)set.jsp頁(yè)面,瀏覽器顯示結(jié)果如圖1-3所示:

圖1-3 瀏覽器顯示結(jié)果
4.3 remove標(biāo)簽
remove標(biāo)簽的作用是刪除域中的數(shù)據(jù),其在jsp頁(yè)面中的用法:<c:remove var=”xxx” scope=”xxx”/>,其中這兩個(gè)屬性的作用如下:
l var:指定刪除變量的名字;
l scope:指定從哪個(gè)域中刪除指定的變量,可選值為:page,request,session,application;如果沒(méi)有指定scope的值,則表示刪除所有域中的名字為指定值的變量,如果指定了scope的值,那么將刪除指定域中的指定變量。

本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://8y3kgpwe.cn/javaee
0 分享到:
和我們?cè)诰€交談!