Servlets:
É claro que em servlets os saltos geralmente ocorrem em doGet, doPost e outros métodos.
1) método de redirecionamento
resposta.sendRedirect("/a.jsp");
O caminho para a página é um caminho relativo. sendRedirect pode pular para qualquer página, não necessariamente limitada a esta aplicação web, como:
resposta.sendRedirect("//www.VeVB.COm");
A barra de endereço do navegador muda após o salto.
Se quiser passar o valor desta forma, você só pode trazer o parâmetro na URL ou colocá-lo na sessão. Não pode usar request.setAttribute para passá-lo.
2) método direto
Despachante RequestDispatcher = request.getRequestDispatcher("/a.jsp");
despachante .forward(solicitação, resposta);
O caminho para a página é um caminho relativo. O método de encaminhamento só pode pular para páginas neste aplicativo da web.
A barra de endereço do navegador não mudará após o salto.
Usando este método para pular, você pode usar três métodos para passar valores: parâmetro, sessão, request.setAttribute na URL
JSP:
1) resposta.sendRedirect();
O mesmo método que response.sendRedirect() do servlet.
Out.flush() não é permitido antes desta instrução. Se houver, ocorrerá uma exceção:
java.lang.IllegalStateException: Não é possível sendRedirect() após os dados serem confirmados para o cliente.
em com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
A barra de endereço do navegador muda após o salto
Se você quiser pular para um host diferente, após o salto, as instruções após esta instrução continuarão a ser executadas, como se um novo thread tivesse sido aberto, mas a operação de resposta não tem sentido;
Se você quiser pular para o mesmo host, o salto não ocorrerá até que as instruções após esta instrução sejam executadas;
2) resposta.setHeader("Localização","");
Out.flush() não é permitido antes desta instrução. Se houver, a página não irá saltar.
A barra de endereço do navegador muda após o salto
O salto não ocorrerá até que as instruções após esta instrução sejam executadas.