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