web-dev-qa-db-fra.com

Rediriger des pages dans JSP?

Je dois concevoir plusieurs pages en jsp. Après avoir cliqué sur le bouton d'envoi de la première page, celle-ci devrait être automatiquement redirigée vers la deuxième page.

Pouvez-vous nous aider avec un exemple rapide ou un lien vers un tutoriel qui montre comment implémenter cela?

41
PROXY
<%
    String redirectURL = "http://whatever.com/myJSPFile.jsp";
    response.sendRedirect(redirectURL);
%>
105
oopbase

Cette réponse contient également une solution standard utilisant uniquement la balise de redirection jstl:

<c:redirect url="/home.html"/>
25
SpaceTrucker

Il suffit de définir la page cible dans l'attribut action de la <form> contenant le bouton d'envoi.

Donc, dans page1.jsp:

<form action="page2.jsp">
    <input type="submit">
</form>

Indépendamment du problème, un JSP est pas le meilleur endroit pour faire des affaires, si vous en avez besoin. Pensez à apprendre servlets .

7
BalusC

Bonjour à vous : Si vous avez besoin de plus de contrôle sur l'endroit où le lien doit être redirigé, vous pouvez utiliser cette solution.

C'est à dire. Si l'utilisateur clique sur le lien VÉRIFIER , mais que vous souhaitez l'envoyer à commander si son enregistré (connecté) ou registration page s'il ne le fait pas.

Vous pouvez utiliser 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>

EXPLAINING: est identique à ...

 //pseudo code
 if(condition == true)
   set linkToRedirect = checkout.jsp
 else
   set linkToRedirect = registration.jsp

THEN: en HTML simple ...

<a href="your.domain.com/${linkToRedirect}">CHECKOUT</a>
2
T04435

Extension de la réponse de @ oopbase avec l'instruction return;.

Prenons un cas d'utilisation d'un système d'authentification traditionnel dans lequel nous stockons les informations de connexion dans la session . Sur chaque page, nous vérifions la session active comme,

/* 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 */

Il semble bien à première vue cependant; Il a un problème. Si la session de votre serveur a expiré pour une durée limitée et que l'utilisateur tente d'accéder à la page, il risque de recevoir une erreur si vous n'avez pas écrit votre code dans le bloc try..catch Ou si vous avez traité if(null != session.getAttribute("attr_name")) à chaque fois.

Donc, en mettant une déclaration return;, I a arrêté l'exécution et a été contraint de rediriger la page vers un certain emplacement.

if(null == session || !session.getAttribute("is_login").equals("1")) {
    response.sendRedirect("http://domain.com/login");
    return;
}

Notez que l’utilisation de la redirection peut varier en fonction des besoins. De nos jours, les gens n'utilisent pas ce système d'authentification. (Approche moderne - Authentification basée sur les jetons ) C'est juste un exemple simple pour comprendre où et comment placer une ou plusieurs redirection (s).

1
Hardik Thaker