如何在Servlets中,out.println
將html文本寫入容器的響應對象,通常在System.out.println()
中,它將文本寫入控制檯?瞭解servlets中的out.println
這在概念上給我造成了問題。
如何在Servlets中,out.println
將html文本寫入容器的響應對象,通常在System.out.println()
中,它將文本寫入控制檯?瞭解servlets中的out.println
這在概念上給我造成了問題。
PrintStream
和PrintWriter
都不是根據控制檯指定的。
PrintStream將功能添加到另一個輸出流,即可方便地打印各種數據值的表示。 PrintStream
將格式化對象的表示形式打印到文本輸出流。 PrintWriter
它們都是關於格式化數據並將格式化數據傳遞給輸出流。任何輸出流。默認情況下,在某些環境中,System.out
和System.err
中的每個最初引用的對象都會將其數據發送到某種控制檯,但這只是這些特定的實例。
即使是那些可以改變。例如,在某些類型的測試中,將System.out
替換爲PrintStream
可以將其數據發送到。
它使用從的Javadoc一個ServletOutputStream
,
提供的二進制數據發送到客戶端的輸出流。 A
ServletOutputStream
對象通常通過ServletResponse.getOutputStream()
方法檢索。
如果你看看System.out
你可以看到,這是一個PrintStream
這是一個不同的實施OutputStream
。
沒有在servlet中引用PrintWriter類,我們通過PrintWriter out = response.getwriter()獲取servlet代碼中的聲明? – awhitesong 2014-11-05 22:13:39
@awhitesong它完全依賴於'PrintWriter'打印到的底層'OutputStream'。在'Servlet'的情況下,它打印到我在我的答案中鏈接到的'OutputStream'。另外,'System.out'不是'PrintWriter'。 – 2014-11-05 22:15:25
如果servlet中的某個位置調用out.println(...)
寫入響應對象,則out
必須是對響應對象的OutputStream
或包裝流及其的引用。如果System.out
發送到其他地方的輸出(通常它會這樣做),那麼它是對不同OutputStream
的引用。
一個名爲out
的servlet方法(或任何其他方法)局部變量與System.out
完全無關,禁止您將其中一個初始化爲另一個的引用。
Servlet中有對PrintWriter類的引用,PrintWriter或PrintStream的println()通常寫入控制檯的權利? – awhitesong 2014-11-05 22:07:57
**沒有通用的「out in servlets」。**如果在某些servlet的某些方法中out-out有意義,那麼它可能是局部變量,儘管它也可能是特定servlet的實例或類變量實現類。這樣的變量指的是最後設置的任何對象,如果有的話。在我的一個servlet中,它可能被初始化爲引用當前ServletResponse對象的輸出流。 – 2014-11-05 22:23:44
因此,在system.out的情況下,printstream將輸出流類轉發到哪個outputstream類中,以便像servlet中的ServletOutputStream一樣將其輸出到控制檯? – awhitesong 2014-11-05 22:56:21
@awhitesong每個'PrintStream'都被告知它的輸出流是一個構造參數。請參閱上面引用的文檔。 – 2014-11-05 23:14:46