1.RequestDispatcher.forward()
funciona en el lado del servidor. Cuando se usa forward(), el motor de Servlet pasa la solicitud HTTP del Servlet o JSP actual a otro Servlet, JSP o archivo HTML normal, es decir, al que se envía su formulario. a.jsp, forward () se usa en a.jsp para redirigir a b.jsp. En este momento, toda la información enviada por el formulario se puede obtener en b.jsp y los parámetros se pasan automáticamente.
Sin embargo, forward() no puede redirigir a un archivo jsp con un marco. Puede redirigir a un archivo html con un marco. Al mismo tiempo, forward() no se puede pasar con parámetros al final, como servlet?name=frank. Si esto no funciona, puede pasar la respuesta en el programa.setAttribute("name",name) para pasar a la página siguiente.
la
redirección.
El contenido del código generalmente se usa en servlets, no en jsp.
public void doPost (solicitud HttpServletRequest, respuesta HttpServletResponse)
lanza ServletException,IOException ...{
respuesta.setContentType("texto/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcherrd = nulo;
rd = sc.getRequestDispatcher("/index.jsp"); //Página dirigida
rd.forward(solicitud, respuesta);
}
2.respuesta.sendRedirect()
Funciona en el navegador del usuario. sendRedirect() puede pasar parámetros, como servlet?name=frank, a la página siguiente. Al mismo tiempo, puede redirigir a diferentes hosts.
Después de la redirección, la URL de la página redirigida aparecerá en la barra de direcciones del navegador.
Ejemplo: redireccionamiento en servlet
Contenido del código
public void doPost(solicitud HttpServletRequest, respuesta HttpServletResponse)
lanza ServletException,IOException ...{
respuesta.setContentType("text/html; charset=gb2312");
respuesta.sendRedirect("/index.jsp")
;
Dado que la respuesta es un objeto implícito en la página jsp, se puede utilizar respuesta.sendRedirect() para implementar directamente la reubicación en la página jsp.
Nota:
(1). Cuando se utiliza Response.sendRedirect, no puede haber salida HTML delante.
Esto no es absoluto. Sin salida HTML, en realidad significa que no se puede enviar HTML al navegador. De hecho, los servidores actuales tienen un mecanismo de caché, generalmente 8K (me refiero a JSP SERVER. Esto significa que, a menos que apague el caché o use out.flush () para forzar una actualización, antes de usar sendRedirect, una pequeña cantidad). También se permite la salida HTML.
(2) Después de .response.sendRedirect, debe ir seguido de un retorno;
ya sabemos que Response.sendRedirect se redirige a través del navegador, por lo que no habrá ninguna acción real hasta que se complete el procesamiento de la página. Ahora que ya ha realizado la dirección, ¿cuál es la importancia del resultado final? Y es posible que la dirección falle debido a la salida posterior.
Comparar:
(1).Request Dispatcher.forward() es la redirección del control en el contenedor, y la dirección redirigida no se mostrará en la barra de direcciones del navegador del cliente;
(2).response.sendRedirect() es un salto completo. El navegador obtendrá la dirección de salto y reenviará el enlace de solicitud. De esta forma, la dirección del enlace tras el salto se podrá ver en la barra de direcciones del navegador.
El primero es más eficiente. Cuando el primero pueda satisfacer las necesidades, intente utilizar el método RequestDispatcher.forward().
Nota: en algunos casos, por ejemplo, si necesita saltar a un recurso en otro servidor, debe utilizar el método. Método HttpServletResponse.sendRequest().
3.
La parte subyacente la implementa RequestDispatcher, por lo que lleva la huella del método RequestDispatcher.forward(). Si hay muchos resultados antes de
También tenga en cuenta: no puede cambiar la dirección del navegador. La actualización generará envíos repetidos.
4. Modifique el atributo Ubicación del encabezado HTTP para redirigir.
Redirige la página modificando directamente la barra de direcciones.
El código del archivo jsp es el siguiente:
Contenido del código: 5. JSP implementa la redirección automática a otra página después de permanecer en una determinada página durante unos segundos.
En el archivo html, el siguiente código:
Qué significa: Después de 5 minutos, la página que estás navegando cambiará automáticamente a la página target.html. 300 en el código es el tiempo de retraso de actualización en segundos. target.html es la página de destino a la que desea redirigir. Si es esta página, la actualizará automáticamente.
Como se puede ver en lo anterior, puede usar setHeader para redirigir automáticamente a otra página después de permanecer en una página durante unos segundos.
Código clave:
Contenido del código
<%
respuesta.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
Cadena newLocn = "/newpath/jsa.jsp";
respuesta.setHeader("Ubicación",newLocn);
%>
Contenido de cadena=tiempo de estancia+";URL="+URL;
respuesta.setHeader("ACTUALIZAR",contenido);