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

Pq no forward o JSP é acessado com o endereço do WEB-inf e no redirect não?

Pq no forward o JSP é acessado com o endereço do WEB-inf e no redirect não?

if(tipoEEndereco[0].equals("forward")) {
            RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/view/"+tipoEEndereco[1]);
            rd.forward(request, response);
        }else {
            response.sendRedirect(tipoEEndereco[1]);
1 resposta
solução!

Ola Ronald.

Então isso é pela diferença das abordagens do forward e redirect. E também lembrando que qualquer arquivo dentro de WEB-INF é inacessível externamente.

Assim, no forward a servlet indica ao container web qual pagina ou endereço interno ele deve percorrer. Como é uma "conversa" entre a servlet e o servidor java, você pode indica-lo para um caminho de pagina que esteja dentro do WEB-INF, que será alcançado com sucesso. Após ler o arquivo com sucesso, o servidor faz 1 response ao navegador com aquele conteúdo.

Já no redirect a servlet indica um endereço externo, pois ela já cria 1 response ao navegador com status http 302. O navegador ao receber esse retorno com esse status, automaticamente cria uma nova request para o endereço indicado, que após processar no servidor java, faz um segundo response com o conteúdo. Dessa forma é impossível no redirect indicar um arquivo dentro do WEB-INF, pois o navegador ao tentar acessá-lo não iria conseguir.

Forward: Servlet --> WebContainer --> Response ao navegador

Redirect: Servlet --> Primeira response ao navegador URL e status http 302 --> Navegador automaticamente cria request na URL --> WebContainer --> Segunda response ao navegador

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