为什么 PrintWriter.println() 在写入 HTML 时不终止行?
Why doesn't PrintWriter.println() terminate lines when writing to HTML?
如果我使用方法 println()
写入 file 或 console,它会写入一条消息并终止。很容易。但现在我希望它使用 Servlet class 写入 HTML 页面。代码:
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter pw = resp.getWriter();
for (int i = 0; i < 1000; i++) {
pw.println("hello " + i);
}
}
我期望的是在每一行中打印消息(就像我使用 <br>
一样),如下所示:
hello 0
hello 1
hello 2
hello 3
...
但这就是我得到的:
有人能告诉我为什么不是每条消息都换行打印吗?如果我使用相同的代码写入 file 或 system.out,它将获得所需的输出。这意味着为什么我需要放置 <br>
以使此代码以这种方式工作,甚至认为我正在使用 println()
应该隐式地这样做?
如果您查看 HTML,您会在其中看到换行符。但是当在浏览器中呈现时,浏览器会忽略白色 space 并将其转换为单个 space。请参阅此代码段:
<body>
<div>
Hey
Jude
don't
be
afraid
</div>
</body>
如果我使用方法 println()
写入 file 或 console,它会写入一条消息并终止。很容易。但现在我希望它使用 Servlet class 写入 HTML 页面。代码:
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter pw = resp.getWriter();
for (int i = 0; i < 1000; i++) {
pw.println("hello " + i);
}
}
我期望的是在每一行中打印消息(就像我使用 <br>
一样),如下所示:
hello 0
hello 1
hello 2
hello 3
...
但这就是我得到的:
有人能告诉我为什么不是每条消息都换行打印吗?如果我使用相同的代码写入 file 或 system.out,它将获得所需的输出。这意味着为什么我需要放置 <br>
以使此代码以这种方式工作,甚至认为我正在使用 println()
应该隐式地这样做?
如果您查看 HTML,您会在其中看到换行符。但是当在浏览器中呈现时,浏览器会忽略白色 space 并将其转换为单个 space。请参阅此代码段:
<body>
<div>
Hey
Jude
don't
be
afraid
</div>
</body>