Servlette :
Bien entendu, dans les servlets, les sauts se produisent généralement dans doGet, doPost et d'autres méthodes.
1) méthode de redirection
réponse.sendRedirect("/a.jsp");
Le chemin d'accès à la page est un chemin relatif. sendRedirect peut accéder à n'importe quelle page, sans nécessairement se limiter à cette application Web, telle que :
réponse.sendRedirect("//www.VeVB.COm");
La barre d'adresse du navigateur change après le saut.
Si vous souhaitez transmettre la valeur de cette manière, vous pouvez uniquement apporter le paramètre dans l'URL ou le mettre dans la session. Vous ne pouvez pas utiliser request.setAttribute pour le transmettre.
2) méthode avant
Répartiteur RequestDispatcher = request.getRequestDispatcher("/a.jsp");
répartiteur .forward (demande, réponse);
Le chemin d'accès à la page est un chemin relatif. La méthode forward ne peut accéder qu'aux pages de cette application Web.
La barre d'adresse du navigateur ne changera pas après le saut.
En utilisant cette méthode pour sauter, vous pouvez utiliser trois méthodes pour transmettre des valeurs : paramètre, session, request.setAttribute dans l'URL
JSP :
1) réponse.sendRedirect();
La même méthode que la réponse.sendRedirect() du servlet.
Out.flush() n'est pas autorisé avant cette instruction. S'il y en a, une exception se produira :
java.lang.IllegalStateException : impossible de sendRedirect() une fois les données validées auprès du client.
sur com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
La barre d'adresse du navigateur change après le saut
Si vous souhaitez passer à un autre hôte, après le saut, les instructions qui suivent cette instruction continueront à s'exécuter, comme si un nouveau thread avait été ouvert, mais l'opération de réponse n'a aucun sens ;
Si vous souhaitez accéder au même hôte, le saut n'aura lieu que lorsque les instructions suivant cette instruction seront exécutées ;
2) réponse.setHeader("Emplacement","");
Out.flush() n'est pas autorisé avant cette instruction. Si tel est le cas, la page ne sautera pas.
La barre d'adresse du navigateur change après le saut
Le saut n'aura lieu que lorsque les instructions suivant cette instruction seront exécutées.