【问题标题】:Why doesn't PrintWriter.println() terminate lines when writing to HTML?为什么 PrintWriter.println() 在写入 HTML 时不终止行?
【发布时间】:2020-12-18 21:36:53
【问题描述】:

如果我使用方法println() 写入文件控制台,它会写入一条消息并终止。很容易。但现在我希望它使用 Servlet 类写入 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);
        }
}

我所期望的是在每一行中都打印出消息(好像我使用了&lt;br&gt;),如下所示:

hello 0
hello 1
hello 2
hello 3
...

但这就是我得到的:

谁能告诉我为什么不是每条消息都打印在新行中?如果我使用相同的代码写入 filesystem.out,它将获得所需的输出。这意味着为什么我需要输入 &lt;br&gt; 以使此代码以这种方式工作,即使我认为我正在使用 println() 应该隐含地这样做?

【问题讨论】:

    标签: java servlets line-breaks printwriter


    【解决方案1】:

    如果您查看 HTML,您会在其中看到换行符。但是在浏览器中呈现时,浏览器会忽略空格并将其转换为单个空格。看到这个sn-p:

    <body>
    <div>
    Hey
    Jude
    don't
    be
    afraid
    </div>
    </body>

    【讨论】:

    • 那我不应该在一行中收到我的消息并且必须左右滚动才能看到全部内容吗?请注意它如何完美地呈现它以适应宽度。它是怎么做到的?
    • re 它是如何做到的? 因为这是浏览器通常所做的 --- 填充文本以适应可用空间。尝试调整您正在阅读本文的浏览器的大小/
    • 因为在html文本中,空格并不重要。
    • 如果您希望浏览器为每个输出呈现新行,您必须在每行之后输出&lt;br/&gt; 标签。 &lt;br&gt; 是浏览器知道的意思是“跳到下一行”
    猜你喜欢
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2012-10-24
    • 1970-01-01
    • 2011-01-17
    • 2018-05-17
    • 1970-01-01
    相关资源
    最近更新 更多