Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

redirect e forward

Vimos que nas actions determinamos seus retornos de acordo com a função de cada uma. Gostaria que alguém me confirmasse, por gentileza, se minha linha de raciocínio está correta:

redirect: quando uma action do controller chama outra action;

forward: quando uma action do controller chama um elemento da view.

Seria basicamente isso ou teria alguma outra diferença?

1 resposta
solução!

Olá Gustavo!

Na verdade é o contrário!

Vamos lá:

Forward (encaminhar) é uma comunicação que acontece entre objetos de request/response (Servlet e JSP); O forward sempre irá acontecer do lado do servidor sem que o browser saiba o que está acontecendo por debaixo dos panos.

Redirect (redirecionar) é uma comunicação que acontece entre a servlet e o browser onde, o primeiro, irá retornar para o browser uma nova url e o próprio browser será o responsavel por disparar essa nova página.

Poderiamos simular o fluxo dos dois da seguinte maneira:

1 - O usuario digita a url de um site de compras

2 - A servlet recebe a requisição e exibe a tela dos produtos

3 - Ele seleciona o produto e clica em comprar

4 - Quando ele clica no botão precisamos validar a compra e por isso nossa servlet irá chamar outra servlet de validação utilizando forward

5 - Após validar, nossa servlet faz um redirect para página de sucesso da compra.

Outra diferença entre os dois é que o forward guarda parametros da requisição anterior e vai passando para as próximas que vierem para que você possa utiliza-los já o redirect não pois sempre que se redireciona você faz uma nova requisição a página e ela irá vir com o corpo zerado.

Espero que tenha ajudado! ^^

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software