RequestDispatcher e IllegalStateException

9 respostas
J

Oi pessoal :)

Um negócio que eu tinha certeza absoluta que tinha entendido rsrsrs mas que fazendo um simulado vi que não entendi foi nada kkk

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {

        res.getOutputStream().print("Antonio");
        
        res.getOutputStream().flush();
 
         req.getRequestDispatcher("Servico2").forward(req, res);
  
    }

não era pra dar IllegalStateException?

ele chama forward depois de ter submetido a resposta :S

valeu

9 Respostas

J

gente … rsrsrs

ninguem?

W

Gera IllegalStateException sim, a resposta no simulado está errada com certeza, e é um daqueles casos que o cliente não ve que a exception aconteceu pois o conteúdo de ServletOutputStream já foi mandando !

O que não está muito correto é usar ServletOutputStream para enviar dados de texto, mas é possível

de onde é esse simulado ?

J

isso ai foi eu quem escrevi

funciona sim cara

:S

não sei pq mas funciona

caso ou Servico2 tente escrever no stream dá illegal state …

mas eu pensei que … escreveu no stream … nao pode mais dispatch

W

Então, vai parecer que funcionou, a exception vai acontecer mas você não pode percebê-la, pois o flush já enviou os dados para o browser , a exception acontece e não é percebida ! ^^ estranho mas verdade !

J

mas no promp (no meu caso do netbeans) não apareceria a IllegalStateException?

W

Nunca mexi pelo netbeans, mas vê no livro head first ele fala exatamente o que te falei

W

um jeito de você visualizar que essa exception ocorreu é colocando isso aqui junto no código do doGet:

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { try { res.getOutputStream().print("Antonio"); res.getOutputStream().flush(); req.getRequestDispatcher("Servico2").forward(req, res); } catch(Exception e) { PrintWriter writer = new PrintWriter("erro.txt"); writer.println(e.getMessage()); writer.flush(); writer.close(); } }

vai aparecer um arquivo erro.txt no root escrito dentro dele: “Cannot forward after response has been committed”

flwss

B

Isso gera a IllegalStateException, seguramente.

J

caramba

realmente … mandei enviar o erro pro arquivo e funcionou rsrs

obrigado hein hehe

to Mais tranquilo … eu tinha tanta certeza que dava erro ai o simulado veio dizer q não kkk

falow gente

Criado 8 de setembro de 2009
Ultima resposta 10 de set. de 2009
Respostas 9
Participantes 3