標(biāo)簽用法" /> 標(biāo)簽,該標(biāo)簽可以將一段文本內(nèi)容或表達(dá)式的結(jié)果輸出到客戶端。" />
更新時(shí)間:2020-12-15 來源:黑馬程序員 瀏覽量:
在JSP頁面中,最常見的操作就是向頁面輸出一段文本信息,為此,Core標(biāo)簽庫提供了一個(gè)<c:out>標(biāo)簽,該標(biāo)簽可以將一段文本內(nèi)容或表達(dá)式的結(jié)果輸出到客戶端。如果<c:out>標(biāo)簽輸出的文本內(nèi)容中包含了需要進(jìn)行轉(zhuǎn)義的特殊字符,例如>、<、&、'、" 等,<c:out>標(biāo)簽會(huì)默認(rèn)對它們進(jìn)行HTML編碼轉(zhuǎn)換后再輸出。<c:out>標(biāo)簽有兩種語法格式,具體如下:
語法1:沒有標(biāo)簽體的情況
<c:out value="value" [default="defaultValue"] [escapeXml="{true|false}"]/>
<c:out value="value" [escapeXml="{true|false}"]> defaultValue </c:out>
● value屬性用于指定輸出的文本內(nèi)容;
● default屬性用于指定當(dāng)value屬性為null時(shí)所輸出的默認(rèn)值,該屬性是可選的(方括號(hào)中的屬性都是可選的);
● escapeXml屬性用于指定是否將>、<、&、'、" 等特殊字符進(jìn)行HTML編碼轉(zhuǎn)換后再進(jìn)行輸出,默認(rèn)值為true。需要注意的是,只有當(dāng)value屬性值為null時(shí),<c:out>標(biāo)簽才會(huì)輸出默認(rèn)值,如果沒有指定默認(rèn)值,則默認(rèn)輸出空字符串。
為了使初學(xué)者更好的學(xué)習(xí)<c:out>標(biāo)簽,接下來,通過具體的案例來學(xué)習(xí)<c:out>標(biāo)簽的使用,如下所示:
1、使用標(biāo)簽輸出默認(rèn)值
使用<c:out>標(biāo)簽輸出默認(rèn)值有兩種方式,一是通過使用<c:out>標(biāo)簽的default屬性輸出默認(rèn)值,二是通過使用<c:out>標(biāo)簽的標(biāo)簽體輸出默認(rèn)值。接下來通過一個(gè)案例來演示這兩種使用方式,如例1所示。
例1 c_out1.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head></head> <body> <%--第1個(gè)out標(biāo)簽 --%> userName屬性的值為: <c:out value="${param.username}" default="unknown"/><br> <%--第2個(gè)out標(biāo)簽 --%> userName屬性的值為: <c:out value="${param.username}"> unknown </c:out> </body> </html>
打開IE瀏覽器,在地址欄中輸入http://localhost:8080/chapter08/c_out1.jsp訪問c_out1.jsp頁面,此時(shí),瀏覽器窗口中顯示的結(jié)果如圖1所示。
圖1 c_out1.jsp
從圖1可以看出,瀏覽器窗口輸出了兩個(gè)默認(rèn)值均為unknown,這是通過使用<c:out>標(biāo)簽的default屬性以及標(biāo)簽體的兩種方式來設(shè)置的默認(rèn)值,這兩種方式實(shí)現(xiàn)的效果相同。由于在客戶端訪問c_out1.jsp頁面時(shí),并沒有傳遞username參數(shù),所以表達(dá)式${param.username}的值為null,因此,<c:out>標(biāo)簽就會(huì)輸出默認(rèn)值。
如果不想讓<c:out>標(biāo)簽輸出默認(rèn)值,可以在客戶端訪問c_out1.jsp頁面時(shí)傳遞一個(gè)參數(shù),在瀏覽器地址欄中輸入http://localhost:8080/chapter08/c_out1.jsp?username=itcast,此時(shí),瀏覽器窗口中顯示的結(jié)果如圖2所示。
圖2 c_out1.jsp
從圖8-4可以看出,瀏覽器窗口中輸出了userName屬性的值為itcast,這是因?yàn)樵诳蛻舳嗽L問out.jsp頁面時(shí)傳遞了一個(gè)username參數(shù),該參數(shù)的值為itcast,因此,表達(dá)式${param.username}就會(huì)獲取到這個(gè)參數(shù)值,并將其輸出到JSP頁面中。
2、使用標(biāo)簽的escapeXml屬性對特殊字符進(jìn)行轉(zhuǎn)義
<c:out>標(biāo)簽有一個(gè)重要的屬性escapeXml,該屬性可以將特殊的字符進(jìn)行HTML編碼轉(zhuǎn)換后再輸出,接下來通過一個(gè)案例來演示如何使用escapeXml屬性將特殊字符進(jìn)行轉(zhuǎn)換,如例2所示。
例2 c_out2.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head></head> <body> <c:out value="${param.username }" escapeXml="false"> <meta http-equiv="refresh" content="0;url=http://www.itcast.cn" /> </c:out> </body> </html>
打開IE瀏覽器,在地址欄中輸入http://localhost:8080/chapter08/c_out2.jsp訪問c_out2.jsp頁面,此時(shí),瀏覽器窗口中顯示的結(jié)果如圖3所示。
圖3 c_out2.jsp
從圖3可以看到,瀏覽器窗口中顯示的是www.itcast.cn網(wǎng)站的信息,這是因?yàn)樵?lt;c:out>標(biāo)簽中將escapeXml的屬性值設(shè)置為false,因此,<c:out>標(biāo)簽不會(huì)對特殊字符進(jìn)行HTML轉(zhuǎn)換,<meta>標(biāo)簽便可以發(fā)揮作用,在訪問c_out2.jsp頁面時(shí)就會(huì)跳轉(zhuǎn)到www.itcast.cn網(wǎng)站。
如果想對頁面中輸出的特殊字符進(jìn)行轉(zhuǎn)義,可以將escapeXml屬性的值設(shè)置為true,接下來將例3中<c:out>標(biāo)簽的escapeXml屬性修改為true,再次訪問c_out2.jsp頁面,此時(shí),瀏覽器窗口中顯示的結(jié)果如圖4所示。
圖4 訪問結(jié)果
從圖4可以看出,將<c:out>標(biāo)簽中escapeXml屬性的值設(shè)置為true后,在JSP頁面中輸入的<meta>標(biāo)簽便會(huì)進(jìn)行HTML編碼轉(zhuǎn)換,最終以字符串的形式輸出了。需要注意的是,如果在<c:out>標(biāo)簽中不設(shè)置escapeXml屬性,則該屬性的默認(rèn)值為true。
猜你喜歡: