1.RequestDispatcher.forward()
funciona no lado do servidor Ao usar forward(), o mecanismo Servlet passa a solicitação HTTP do Servlet ou JSP atual para outro Servlet, JSP ou arquivo HTML comum, ou seja, seu formulário é enviado para. a.jsp, forward() é usado em a.jsp para redirecionar para b.jsp. Neste momento, todas as informações enviadas pelo formulário podem ser obtidas em b.jsp, e os parâmetros são passados automaticamente.
No entanto, forward() não pode redirecionar para um arquivo jsp com um quadro. Ele pode redirecionar para um arquivo html com um quadro. Ao mesmo tempo, forward() não pode ser passado com parâmetros no final, como servlet?name=frank.
resposta
no programa.setAttribute("name",name) para passar para a próxima página
O URL da barra de endereço do navegador permanece inalterado após o redirecionamento.
O conteúdo do código geralmente é usado em servlets, não em jsp.
public void doPost (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException,IOException...{
resposta.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcher rd=nulo;
rd = sc.getRequestDispatcher("/index.jsp"); //Página direcionada
rd.forward(solicitação,resposta);
}
2.response.sendRedirect()
Ele funciona no navegador do usuário. sendRedirect() pode passar parâmetros, como servlet?name=frank, para a próxima página, ao mesmo tempo, pode redirecionar para diferentes hosts.
Após o redirecionamento, a URL da página redirecionada aparecerá na barra de endereços do navegador.
Exemplo: Redirecionar no servlet
Conteúdo do código
public void doPost(solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException,IOException ...{
response.setContentType("text/html;
charset=gb2312")
;
Como a resposta é um objeto implícito na página jsp, response.sendRedirect() pode ser usado para implementar diretamente a realocação na página jsp.
Nota:
(1). Ao usar response.sendRedirect, não pode haver saída HTML na frente.
Isso não é absoluto. Nenhuma saída HTML significa, na verdade, que nenhum HTML pode ser enviado ao navegador. Na verdade, os servidores de hoje têm um mecanismo de cache, geralmente 8K (quero dizer JSP SERVER, isso significa que, a menos que você desligue o cache ou use out.flush() para forçar uma atualização, antes de usar sendRedirect, uma pequena quantidade). de saída HTML também é permitida.
(2) Após .response.sendRedirect, deve ser seguido por um retorno,
já sabemos que response.sendRedirect é redirecionado através do navegador, portanto não haverá ação real até que o processamento da página seja concluído. Agora que você já fez a direção, qual é o significado do resultado final? E é possível que a direção falhe devido à saída subsequente.
Comparar:
(1).Request Dispatcher.forward() é o redirecionamento do controle no contêiner, e o endereço redirecionado não será exibido na barra de endereços do navegador do cliente;
(2).response.sendRedirect() é um salto completo. O navegador obterá o endereço do salto e reenviará o link de solicitação. Desta forma, o endereço do link após o salto pode ser visto na barra de endereços do navegador.
O primeiro é mais eficiente. Quando o primeiro puder atender às necessidades, tente usar o método RequestDispatcher.forward().
Observação: em alguns casos, por exemplo, se você precisar pular para um recurso em outro servidor, deverá usar o método. Método HttpServletResponse.sendRequest().
3.
A parte subjacente é implementada por RequestDispatcher, portanto carrega a marca do método RequestDispatcher.forward(). Se houver muita saída antes de
Observe também: não é possível alterar o endereço do navegador. A atualização resultará em envios repetidos.
4. Modifique o atributo Location do cabeçalho HTTP para redirecionar.
Redirecione a página modificando diretamente a barra de endereço.
O código do arquivo jsp é o seguinte:
Conteúdo do código: 5. JSP implementa o redirecionamento automático para outra página após permanecer em uma determinada página por alguns segundos.
No arquivo html, o seguinte código:
O que significa: Após 5 minutos, a página que você está navegando mudará automaticamente para a página target.html. 300 no código é o tempo de atraso da atualização em segundos. target.html é a página de destino para a qual você deseja redirecionar. Se for esta página, ela será atualizada automaticamente.
Como pode ser visto acima, você pode usar setHeader para redirecionar automaticamente para outra página após permanecer em uma página por alguns segundos.
Código chave:
Conteúdo do código
<%
resposta.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
resposta.setHeader("Localização",newLocn);
%>
String content=stayTime+";URL="+URL;
resposta.setHeader("REFRESH",conteúdo);