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

全國咨詢/投訴熱線:400-618-4000

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

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

JSTL標(biāo)簽庫介紹

1.什么是jstl

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

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

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

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

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

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

4.1 out標(biāo)簽
out標(biāo)簽在jsp頁面使用,格式為:<c:out/>,表示向瀏覽器端輸出。out標(biāo)簽有如下三個屬性:
l value:表示向瀏覽器輸出的的值,可以是字符串常量,例如:<c:out value=”aaa”/>,也可以是EL表達(dá)式,例如:<c:out value=”${aaa}”/>;
l default:當(dāng)輸出的內(nèi)容為null時,會輸出default指定的值;
l escapeXml:當(dāng)escapeXml的值為false,表示不會轉(zhuǎn)義“<”、“>”,這樣就有可能會受到JavaScript攻擊,值為true時,會對以上符號進行轉(zhuǎn)義,它的默認(rèn)值就是true。
下面我們通過一個小例子來練習(xí)使用out標(biāo)簽,如下:
(1)對web應(yīng)用Example10下的index.jsp頁面進行編輯,主要代碼如例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)簽庫,然后向request域中存放數(shù)據(jù),存放的數(shù)據(jù)的值為:“<script>alert(‘hello’);</script>“,如果使用out標(biāo)簽輸出時不對特殊字符進行轉(zhuǎn)義,那么瀏覽器端就會彈出一個對話框。
(2)在瀏覽器端訪問index.jsp頁面,瀏覽器端顯示結(jié)果如圖1-1所示:

圖1-1 瀏覽器顯示結(jié)果
圖1-1中,由于沒有對特殊字符進行轉(zhuǎn)義所以,瀏覽器在訪問時將value的值當(dāng)做JavaScript腳本輸出,彈出對話框。
(3)現(xiàn)在將例1-1中,out標(biāo)簽的escapeXml屬性設(shè)置為true,然后再訪問該頁面,瀏覽器顯示結(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”/>,其中三個屬性的作用分別如下:
l var:定義變量的名字;
l value:表示變量的值,可以是EL表達(dá)式;
l scope:表示將設(shè)置的變量存放在哪個域中,默認(rèn)是page域,可選值為:page,request,session,application。
下面通過一個小案例來練習(xí)如何使用set標(biāo)簽,如下:
(1)在Example10的WebRoot目錄下新建一個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)重新啟動服務(wù)器,在瀏覽器端訪問set.jsp頁面,瀏覽器顯示結(jié)果如圖1-3所示:

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

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