如何在同一个 servlet 请求中使用 getOutputStream() 和 getWriter()?
10834 次
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 ,但是你没有与Writer
or的类型兼容性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 回答