Мне нужно использовать JSP для создания HTML-отчета. Я привел пример, но до сих пор он не работает в Tomcat6.Как заменить выходной поток HttpServletResponse?
public class SubstitutionServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/report.jsp");
final ByteArrayOutputStream buf = new ByteArrayOutputStream();
ServletResponseWrapper wrapper = new HttpServletResponseWrapper(response){
@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(buf);
}
};
dispatcher.forward(request, wrapper);
String html = buf.toString("UTF-8"); // "" is returned
System.out.println(html);
response.getOutputStream().print("Completed");
}
}
Когда я пытаюсь запустить этот пример, в результате получается пустая строка. Какую ошибку я сделал?
Ваш поток не был покраснел, что может быть проблемой, и вы должны закрыть поток, когда закончите писать. Это может решить вашу проблему. – Jan
Вы не сделали ничего полезного с 'buf'. Вы напечатали его на 'System.out', то есть на файл журнала, но вы не записали его в выходной поток ответа. И вы не можете, потому что вы перешли к чему-то еще. Что именно вы пытаетесь сделать здесь? Это не имеет смысла. – EJP