在該方法中service()
,我們使用如何在HttpServletResponse中使用getWriter()函數?
PrintWriter out = res.getWriter();
請告訴我是怎麼返回PrintWriter
類對象,然後使該瀏覽器的連接,將數據發送到瀏覽器。
在該方法中service()
,我們使用如何在HttpServletResponse中使用getWriter()函數?
PrintWriter out = res.getWriter();
請告訴我是怎麼返回PrintWriter
類對象,然後使該瀏覽器的連接,將數據發送到瀏覽器。
它不是使一個連接到瀏覽器 - 瀏覽器已經連接到服務器。它可以緩衝你在內存中寫入的內容,然後在請求結束時傳輸數據,或者確保所有頭文件已寫入網絡連接,然後返回PrintWriter
,將數據直接寫入該網絡連接。
在緩衝場景中,可能會有一個固定的緩衝區大小,如果超過該數量,到目前爲止所寫入的數據將被「刷新」到網絡連接。擁有緩衝區的一大優勢是,如果中途出現問題,您可以將響應更改爲錯誤頁面。如果您在出現問題時已經開始編寫響應,那麼可以乾淨地指出錯誤的方法並不多。如果在完成響應之前用完了緩衝區,我會可靠地通知響應將使用分塊編碼(chunked encoding) 。)
另請注意,Servlet API的幾個開源實現可用。這可以讓你看到它是如何完成的。
我相信官方的實施也是開源的,幷包含在Glassfish服務器中。
一個非常簡單的實現:
PrintWriter getWriter() throws java.io.IOException {
return new PrintWriter(socket.getOutputStream());
}
(塊編碼可以處理,你需要完成的內容,在緩衝之前已經寫出來頭的情況。) – 2009-04-15 07:20:26