Qual a diferença entre as duas? E em uma situação que só quero chamar uma pagina uso qual das duas?
Qual a diferença entre as duas? E em uma situação que só quero chamar uma pagina uso qual das duas?
O RequestDispatcher "despacha" a requisição para outro recurso, ou seja, faz um encaminhamento interno da requisição para outro recurso do servidor.
O sendRedirect redireciona o navegador do cliente para outra URL, no caso, a requisição que você fez é "descartada" e é gerada uma nova requisição para esse outro recurso.
Aqui vai um exemplo:
Quando você submete um formulário de login, você está enviando no corpo da requisição um parâmetro "login" e um parâmetro "senha", o que foi preenchido em cada campo pode ser capturado através desses parâmetros da requisição. Se o programa por baixo dos panos executar um response.sendRedirect para outro recurso, os dados da requisição irão se perder e esse recurso não conseguirá acessar os valores de "login" e "senha" pois eles não mais existirão, mas se ele fizer um requestDispatcher.forward ele irá repassar essa requisição para outro recurso, o método ou página que receber essa requisição ainda irá conseguir extrair os parâmetros "login" e "senha" pois é a mesma requisição.
O redirecionamento você pode usar em páginas de erro, acesso restrito a recursos que o usuário não tem autorização e, também quando não há necessidade de repassar a requisição para o próximo recurso. Se você só quer acessar uma página, tanto faz qual usar, para chegar até uma página de login, você pode usar um sendRedirect, mas um forward também funciona. Você vai precisar analisar, se você não tá passando nenhuma informação na requisição, o redirect vai funcionar bem, se você precisa passar a requisição para o próximo recurso consumi-la, vai precisar de um RequestDispatcher