[1/2 Off] Qual a diferença entre forward e sendRedirect?

qual a diferença entre:

rd = request.getRequestDispatcher("pagina.html"); rd.forward(request, response);

para:

response.sendRedirect("pagina.html");

O RequestDispatcher.foward() ocorre no servidor, ou seja, o web container se incumbe disto.

Já como response.sendRedirect() é do lado do browser. E você NÃO pode passar os dados do request.

[quote=“danieldestro”]O RequestDispatcher.foward() ocorre no servidor, ou seja, o web container se incumbe disto.

Já como response.sendRedirect() é do lado do browser. E você NÃO pode passar os dados do request.[/quote]

Por isso, o sendRedirect() permite que você referencie endereços externos ao servidor enquanto o foward() apenas internos.

Na Java Magazine #12, na coluna Pente Fino, o Felipe Leme dá uma explicação bem legal da diferença, inclusive mostranto alguns diagramas. :smiley:

[]'s

vou acrescentar aqui a experiencia q tive recentemente,e peço a opinião de voces:

eu usei security-constraints no web.xml para proteger uma pagina, obrigando o pessoal a fazer login antes de acessa-la, se o cara tiver o papel certo acessa, senao obtem um erro.

entao fiz tudo começar num servlet q faz um sendRedirect para essa página protegida (embora isso nao fosse necessario), tudo da certo, os usuarios sao encaminhados para a pagina de login, e depois obtem ou nao o acesso a pagina.

mas entao fui fazer um teste com o forward do RequestDIspatcher e… eles sao encaminhados a pagina protegida e nao sao redirecionados para a pagina de login. a explicação q deram aí em cima , q com forward tudo acontece dentro do container pode ser a resposta pra isso, mas nao tenho certeza. oq vcs acham?