qual a diferença entre:
rd = request.getRequestDispatcher("pagina.html");
rd.forward(request, response);
para:
response.sendRedirect("pagina.html");
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.
[]'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?