對於所有你「重複」的狂熱分子,在SO右here上有類似的問題。不同的是,我畫了一個生動的例子,我無法理解輸出。Java EE中JspWriter和PrintWriter的區別?
爲JspWriter和PrintWriter文檔說有兩點不同:的JspWriter可以拋出異常,PrintWriter的不應該這樣做。 2. JspWriter在場景後面使用PrintWriter,但是由於默認情況下JSP頁面被緩衝,所以直到the buffer is flushed
纔會創建PrintWriter - 無論在JSP頁面的上下文中是什麼意思。我不確定我是否理解了這最後一部分。考慮這個JSP頁面:
<%@page import="java.io.PrintWriter"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JspWriter versus PrintWriter</title>
</head>
<body>
<p>I should be row one.</p>
<%
out.println("<p>JspWriter said: I should be the second row.</p>");
PrintWriter pw = response.getWriter();
pw.println("<p>PrintWriter said: I should be the third row.</p>");
%>
<p>I should be the fourth row.</p>
</body>
</html>
它產生以下輸出:
PrintWriter said: I should be the third row.
I should be row one.
JspWriter said: I should be the second row.
I should be the fourth row.
正如你可以看到,他的JspWriter輸出字符串到瀏覽器是我預期。但PrintWriter在將所有其他內容發送到瀏覽器之前輸出其字符串。如果我們檢查發送給瀏覽器的源代碼,則在DOCTYPE聲明之前,PrintWriter的字符串將作爲第一行發送。所以在上面的例子中,究竟發生了什麼?
呃你走了!謝謝你的隊友,非常感謝。 –