out 對(duì)象是一個(gè)輸出流,用來(lái)向客戶端輸出數(shù)據(jù),可以是各種數(shù)據(jù)類型的內(nèi)容,同時(shí),它還可以管理應(yīng)用服務(wù)器上的輸出緩沖區(qū),緩沖區(qū)的默認(rèn)值是 8KB,可以通過(guò)頁(yè)面指令 page 來(lái)改變默認(rèn)大小。
out 對(duì)象是一個(gè)繼承自抽象類 javax.servlet.jsp.JspWriter 的實(shí)例,在實(shí)際應(yīng)用中,out 對(duì)象會(huì)通過(guò) JSP 容器變換為 java.io.PrintWriter 類的對(duì)象。
在使用 out 對(duì)象輸出數(shù)據(jù)時(shí),可以對(duì)數(shù)據(jù)緩沖區(qū)進(jìn)行操作,及時(shí)清除緩沖區(qū)中的殘余數(shù)據(jù),為其他的輸出讓出緩沖空間。數(shù)據(jù)輸出完畢后要及時(shí)關(guān)閉輸出流。下面介紹 out 對(duì)象的應(yīng)用。
表 1 列出了 out 對(duì)象常用的方法。
方法 |
說(shuō)明 |
---|---|
void print(各種數(shù)據(jù)類型) |
將指定類型的數(shù)據(jù)輸出到 HTTP 流,不換行 |
void println(各種數(shù)據(jù)類型) |
將指定類型的數(shù)據(jù)輸出到 HTTP 流,并輸出一個(gè)換行符 |
void newline |
輸出換行字符 |
在使用 print() 或 println() 方法向客戶端輸出時(shí),由于客戶端是瀏覽器,因此可以使用 HTML 中的一些標(biāo)記控制輸出格式。例如:
out.println("<font color=red>Hello </font>");
管理輸出緩沖區(qū)
默認(rèn)情況下,服務(wù)端要輸出到客戶端的內(nèi)容不直接寫到客戶端,而是先寫到一個(gè)輸出緩沖區(qū)中。使用 out 對(duì)象的 getBufferSize() 方法取得當(dāng)前緩沖區(qū)的大小(單位是 KB),用 getRemaining() 方法取得當(dāng)前使用后還剩余的緩沖區(qū)的大小(單位是 KB)。
JSP 只有在下面三種情況下,才會(huì)把緩沖區(qū)的內(nèi)容輸出到客戶端。
• 該 JSP 網(wǎng)頁(yè)已完成信息的輸出。
• 輸出緩沖區(qū)己滿。
• JSP 中調(diào)用了 out.flush() 或 response.flushBuffer()。
另外,調(diào)用 out 對(duì)象的 clear() 方法,可以清除緩沖區(qū)的內(nèi)容,類似于重置響應(yīng)流,以便重新開始操作。如果響應(yīng)已經(jīng)提交,則會(huì)產(chǎn)生 IOException 異常。此外,另一種方法 clearBuffer() 可以清除緩沖區(qū)“當(dāng)前”內(nèi)容,而且即使內(nèi)容已經(jīng)提交給客戶端,也能夠訪問(wèn)該方法。
例1:用 out 對(duì)象管理輸出緩沖區(qū),代碼如下:
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>
out 對(duì)象管理輸出緩沖區(qū)
</title>
</head>
<body>
<h2>out對(duì)象管理輸出緩沖區(qū)</h2>
<%out.println("學(xué)習(xí)使用out對(duì)象管理輸出緩沖區(qū):<br>");%> <br>
緩沖大?。?lt;%=out.getBufferSize()%> <br>
剩余緩存大?。?lt;%=out.getRemaining()%> <br>
是否自動(dòng)刷新:<%=out.isAutoFlush()%> <br>
</body>
</html>
運(yùn)行結(jié)果如圖 1 所示。
圖1 用out對(duì)象管理輸出緩沖區(qū)