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

时间:2010-12-01 07:02:45

标签: java jsp servlets netbeans outputstream

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

2 个答案:

答案 0 :(得分:11)

您不能同时使用它们。如果你第一次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没有类型兼容性。< / p>

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

答案 1 :(得分:2)

您既可以同时使用它们,也可以不使用相同的响应。如果在已经开始使用OutputStream之后需要使用Writer,只需在输出流周围包装一个OutputStreamWriter。但是,如果您在使用编写器之后需要使用输出流,则不能。您可以始终首先获取输出流,如上所述将编写器包裹起来,执行写入,刷新,然后执行输出流。