Как использовать getOutputStream() и getWriter() в том же запросе сервлета?Как использовать getOutputStream() и getWriter() в том же запросе сервлета?
ответ
Вы можете использовать их оба, просто не в то же время, или, скорее, не для одного и того же ответа. Если вам нужно использовать Writer после того, как вы уже начали использовать OutputStream, просто оберните OutputStreamWriter вокруг выходного потока. Однако, если вам нужно использовать выходной поток после того, как вы уже использовали автора, вы не можете. Вы всегда можете получить выходной поток сначала, оберните писателя вокруг него, как указано выше, сделайте свой Writing, flush, а затем выполните поток вывода.
Вы не можете использовать их обоих одновременно. Если вы сначала сделали 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
, который несколько похож, но у вас нет совместимости типа с Writer
или PrintWriter
.
// Encoding again very important to match that of your output.
PrintStream print = new PrintStream(os, true, "utf-8");
Как я могу использовать getwriter для печати диаграммы в jfreechart? – faree 2010-12-01 08:34:26
Просьба предоставить более подробную информацию. В частности, вы говорите, что некоторые запросы обрабатываются с помощью getWriter, а некоторые из них обрабатываются с помощью getOutputStream или вы пытаетесь использовать их для одного запроса? – 2010-12-01 07:10:36