2

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

4

2 回答 2

12

你不能同时使用它们。如果你先做了,getOutputStream()你就不能在同一个请求中做getWriter(),反之亦然。但是,您可以将您的内容包装ServletOuptputStream在 aPrintWriter中以获得与您相同的作家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有点相似的 a ,但是你没有与Writeror的类型兼容性PrintWriter

// Encoding again very important to match that of your output.
PrintStream print = new PrintStream(os, true, "utf-8");
于 2010-12-01T07:24:31.467 回答
2

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

于 2010-12-01T07:19:27.793 回答