繁体   English   中英

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

[英]How do I use getOutputStream() and getWriter() in the same servlet request?

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

你不能同时使用它们。 如果你第一次执行getOutputStream() ,则不能在同一个请求中执行getWriter() ,反之亦然。 但是,您可以将您的ServletOuptputStream包装在PrintWriter以获得与getWriter()相同类型的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");

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM