Đối với tất cả các fan hâm mộ "trùng lặp", có một câu hỏi tương tự về SO ngay here. Sự khác biệt là tôi vẽ một ví dụ sống động mà tôi không thể hiểu được đầu ra của.Sự khác nhau giữa JspWriter và PrintWriter trong Java EE?
Các tài liệu cho JspWriter và PrintWriter nói có hai sự khác biệt: 1. JspWriter có thể ném ngoại lệ, PrintWriter không nên làm như vậy. 2. JspWriter sử dụng PrintWriter phía sau hiện trường, nhưng do các trang JSP mặc định được đệm, PrintWriter sẽ không được tạo cho đến the buffer is flushed
- bất kể điều đó có ý nghĩa gì trong ngữ cảnh của một trang JSP. Tôi không chắc tôi đã hiểu phần cuối này. Xem xét trang JSP này:
<%@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>
Nó tạo ra kết quả như sau:
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.
Như bạn có thể thấy, kết quả đầu ra JspWriter chuỗi của mình để trình duyệt tôi đã mong đợi nó đến. Nhưng PrintWriter xuất chuỗi của mình trước khi tất cả các chuỗi khác được gửi tới trình duyệt. Nếu chúng tôi kiểm tra mã nguồn được gửi tới trình duyệt, chuỗi của PrintWriter được gửi dưới dạng dòng đầu tiên, trước khi khai báo DOCTYPE. Vì vậy, trong ví dụ trên, chính xác những gì sẽ xảy ra?
uhm có bạn đi! Thanx mate, nhiều đánh giá cao. –