【问题标题】:How do I use getOutputStream() and getWriter() in the same servlet request?如何在同一个 servlet 请求中使用 getOutputStream() 和 getWriter()?
【发布时间】:2010-12-01 07:02:45
【问题描述】:

如何在同一个 servlet 请求中使用 getOutputStream() 和 getWriter()?

【问题讨论】:

  • 请提供更多细节。特别是,您是在谈论一些使用 getWriter 处理的请求和一些使用 getOutputStream 处理的请求,还是试图将它们都用于同一个请求?

标签: java jsp servlets netbeans outputstream


【解决方案1】:

您不能同时使用它们。如果你首先做了getOutputStream(),那么你就不能在同一个请求中做getWriter(),反之亦然。但是,您可以将 ServletOuptputStream 包装在 PrintWriter 中,以获得与 getWriter() 相同的作家。

ServletOutputStream out = response.getOutputStream();
// Notice encoding here, very important that it matches that of
// response.setCharacterEncoding();
PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, "utf-8"));

不使用getWriter() 的另一种解决方案是使用PrintStream,这有点相似,但是您不具备与WriterPrintWriter 的类型兼容性。

// Encoding again very important to match that of your output.
PrintStream print = new PrintStream(os, true, "utf-8");

【讨论】:

  • 如何使用 getwriter 在 jfreechart 中打印图表?
  • @Parith,将其作为一个新问题发布。
【解决方案2】:

您可以同时使用它们,但不能同时使用,或者不能用于相同的响应。如果您在开始使用 OutputStream 之后需要使用 Writer,只需将 OutputStreamWriter 包裹在输出流周围。但是,如果您在使用了 writer 之后需要使用输出流,则不能。你总是可以先得到输出流,像上面那样把 writer 包裹起来,写,刷新,然后做输出流。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2015-03-24
    • 2018-03-25
    • 2023-03-11
    相关资源
    最近更新 更多