Criei um código para testar em quais momentos a resposta é passada ao usuário para descobrir quando é que poderíamos obter essa exceção. Veja:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
String param = request.getParameter("tipo");
if( param==null || param.length() == 0 )
{
response.getWriter().print("Informe o parametro tipo com os valores: ");
response.getWriter().print(" print, flush, stream, close, header ou cookie");
}
else
{
if( "print".equals(param) )
{
response.getWriter().print("alguma coisa");
}
else if( "flush".equals(param) )
{
response.getWriter().print("alguma coisa");
response.getWriter().flush();
}
else if( "stream".equals(param) )
{
ServletOutputStream output = response.getOutputStream();
}
else if( "close".equals(param) )
{
response.getWriter().print("alguma coisa");
response.getWriter().close();
}
else if( "header".equals(param) )
{
response.addHeader("Pragma","no-cache");
}
else if( "cookie".equals(param) )
{
Cookie c = new Cookie("nome","valor");
response.addCookie(c);
}
try
{
request.getRequestDispatcher("/meu.jsp").forward(request,response);
}
catch(IllegalStateException e)
{
e.printStackTrace();
}
}
}
Verifiquei também que se o forward for executado antes, somente a chamada a getOutputStream gera a exception. No tomcat ele dá a seguinte mensagem: getWriter() has already been called for this response.
Nenhum comentário:
Postar um comentário