【问题标题】:Issue with java.io.PrintWriter while printing multiple spaces on the browser在浏览器上打印多个空格时出现 java.io.PrintWriter 问题
【发布时间】:2011-12-19 12:13:30
【问题描述】:

我有一个文件,比如 test.txt。该文件有一个名称列表作为内容。例如:让内容为“Sachin    Tendulkar”作为示例。注意名字和姓氏之间有四个空格。现在我有了 servlet,它的职责是读取文本文件并在浏览器上打印名称,就像它在文件中一样。我已经为它编写了下面的 servlet 代码。

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    response.setContentType("text/html");

    try 
    {
        FileReader reader = new FileReader("E:/test.txt");
        BufferedReader bufferedReader = new BufferedReader(reader);
        PrintWriter pw = response.getWriter();

        String line = null;
        while( (line = bufferedReader.readLine()) !=null)
        {
            pw.write(line);
        }
        pw.close();


    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}

浏览器上的结果: 萨钦·滕杜尔卡

请注意,在结果中,缺少 Sachin 和 Tendulkar 之间的剩余 3 个空格。我需要所有四个空格。事实上,我们的项目中有报告功能,其中一个 servlet 读取上述文本文件并在 Web 浏览器上打印。但只要文件中有多个空格,printwriter 就会删除多个空格并替换为单个空格。

请尝试上述示例并提供有效的解决方案

【问题讨论】:

    标签: java html css jsp servlets


    【解决方案1】:

    HTML 的一个特性会剪掉连续的空白,你需要在包含 DIV 的下面应用 css 属性white-space:pre; 来显示空格

    例如:

    <div>A    B</div>
    

    将在浏览器上生成类似A B的输出

    现在让我们应用样式

    <div style="white-space:pre">A    B</div>
    

    这将按照您的预期显示在浏览器上

    【讨论】:

    • 但是我没有使用任何 jsp 文件来应用 css 属性。我也不能在 servlet 代码中添加它,因为我使用的报告文件很大,并且包含许多带有多个空格的句子。
    • 其实这不是使用 Servlet 的方式。请检查Servlet,即使您想这样做,您也可以打印 DIV,但我强烈建议您使用 JSP
    • 你好 Jigar,我的要求是我不能改变这里使用 servlet 的方式,因为我正在做一个维护项目。我应该只修复错误。请提供其他选择
    • 在 servlet 中添加 DIV :) (我还是建议你走这条路,这是 hack)
    • 不,div 仍然无法工作:试试这个示例:
      Sachin Tendulkar
    【解决方案2】:

    使用不间断的空格 &amp;nbsp; 而不是空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2023-03-12
      相关资源
      最近更新 更多