Dla wszystkich "duplikatów" fanatyków, istnieje podobne pytanie na prawo SO here. Różnica polega na tym, że maluję żywy przykład, że nie mogę zrozumieć wyniku.Różnica między JspWriter i PrintWriter w Java EE?
Dokumentacja JspWriter i PrintWriter mówi, że są dwie różnice: 1. JspWriter mogą rzucać wyjątki, PrintWriter nie powinien zrobić. 2. JspWriter używa PrintWriter za sceną, ale ponieważ domyślnie strony JSP są buforowane, PrintWriter nie zostanie utworzony przed the buffer is flushed
- cokolwiek to znaczy w kontekście strony JSP. Nie jestem pewien, czy zrozumiałem tę ostatnią część. Rozważmy tę stronę 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>
Produkuje następujący wynik:
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.
Jak widać, JspWriter wyprowadza swój ciąg do przeglądarki były spodziewałem się, że. Ale PrintWriter wypisuje swój ciąg, zanim wszystko inne zostanie wysłane do przeglądarki. Jeśli przyjrzymy się kodowi źródłowemu przesłanemu do przeglądarki, ciąg znaków PrintWriter jest wysyłany jako pierwsza linia przed deklaracją DOCTYPE. A więc w powyższym przykładzie, co dokładnie się dzieje?
uhm, gotowe! Thanx mate, doceniany. –