java - example - request redirect in jsp
Redirigir páginas en JSP? (5)
Tengo que diseñar varias páginas en jsp. Después de hacer clic en el botón de enviar en la primera página, la página debe redirigirse automáticamente a la segunda página.
¿Puedes ayudar con un ejemplo rápido o un enlace a un tutorial que demuestre cómo implementar esto?
Extendiendo la respuesta de @ oopbase con return;
declaración.
Consideremos un caso de uso del sistema de autenticación tradicional donde almacenamos la información de inicio de sesión en la sesión . En cada página buscamos una sesión activa como,
/* Some Import Statements here. */
if(null == session || !session.getAttribute("is_login").equals("1")) {
response.sendRedirect("http://domain.com/login");
}
// ....
session.getAttribute("user_id");
// ....
/* Some More JSP+Java+HTML code here */
Sin embargo, se ve bien a primera vista; Tiene un problema. Si su servidor ha vencido la sesión debido al límite de tiempo y el usuario está intentando acceder a la página, puede recibir un error si no ha escrito su código en el bloque try..catch
o manejado if(null != session.getAttribute("attr_name"))
.
Entonces al poner un return;
declaración detuve más ejecución y forcé a redirigir la página a cierta ubicación.
if(null == session || !session.getAttribute("is_login").equals("1")) {
response.sendRedirect("http://domain.com/login");
return;
}
Tenga en cuenta que el uso de la redirección puede variar según los requisitos. Hoy en día las personas no usan dicho sistema de autenticación. (Enfoque moderno - Autenticación basada en tokens ) Es solo un ejemplo simple para entender dónde y cómo colocar la (s) redirección (es).
Simplemente defina la página de destino en el atributo de action
de <form>
contiene el botón de enviar.
Entonces, en page1.jsp
:
<form action="page2.jsp">
<input type="submit">
</form>
Sin relación con el problema, un JSP not es el mejor lugar para hacer negocios, si es necesario. Considera aprender servlets .
Hola : si necesita más control sobre a dónde debería redirigirse el enlace, podría usar esta solución.
Es decir. Si el usuario está haciendo clic en el enlace de PAGAR , pero desea enviarlo a la página de pago si está registrado (registrado) o en la página de registro si no lo está.
Podría usar JSTL core LIKE:
<!--include the library-->
<%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core" %>
<%--create a var to store link--%>
<core:set var="linkToRedirect">
<%--test the condition you need--%>
<core:choose>
<core:when test="${USER IS REGISTER}">
checkout.jsp
</core:when>
<core:otherwise>
registration.jsp
</core:otherwise>
</core:choose>
</core:set>
EXPLICANDO: es lo mismo que ...
//pseudo code
if(condition == true)
set linkToRedirect = checkout.jsp
else
set linkToRedirect = registration.jsp
ENTONCES: en HTML simple ...
<a href="your.domain.com/${linkToRedirect}">CHECKOUT</a>
Esta respuesta también contiene una solución estándar que usa solo la etiqueta jstl redirect:
<c:redirect url="/home.html"/>
<%
String redirectURL = "http://whatever.com/myJSPFile.jsp";
response.sendRedirect(redirectURL);
%>