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