Notez comment obtenir l'URL de la source de transition. Cette fois, lors de la création de la fonction de connexion, si la connexion était réussie, je l'ai utilisée pour passer à la page qui était ouverte avant la connexion (la page où le bouton de connexion a été enfoncé).
Le flux est le suivant.
La page qui était ouverte avant la connexion (jsp) ↓ Login.java (** Obtenez l'URL de la page qui était ouverte avant la connexion **, passez au formulaire de connexion) ↓ login.jsp (formulaire de connexion) ↓ LoginCheck.java (Déterminez si vous pouvez vous connecter, ** Extrayez l'URL de la page qui était ouverte avant la connexion **) ↓ Page qui était ouverte avant la connexion (retournez sur cette page si la connexion est réussie)
En conclusion, utilisez la ** méthode getHeader ** pour obtenir le ** Referer ** de l'en-tête de la requête.
//Obtenez l'URL de la source de transition des informations d'en-tête de la demande
request.getHeader("REFERER");
Cette fois, nous utiliserons une session pour conserver l'URL acquise, et si la connexion réussit, nous la récupérerons et effectuerons la transition.
Login.java
//Acquiert l'URL de la source de transition des informations d'en-tête de la demande et la stocke dans la session
session.setAttribute("referer", request.getHeader("REFERER"));
request.getRequestDispatcher("/login.jsp").forward(request, response);
LoginCheck.java
//Une fois la connexion réussie, extrayez l'URL source de la transition de la session et de la transition
String url = (String)session.getAttribute("referer");
request.getRequestDispatcher(response.encodeURL(url).substring(29)).forward(request, response);
Lorsque j'ai essayé de passer de LoginCheck.java à la page avant la connexion, j'ai eu une erreur HTTP 404 et j'ai eu du mal. La raison en est que l'URL obtenue par le référent est l'URL entière, donc j'essayais de transmettre en spécifiant des parties inutiles. La solution de contournement est simple, utilisez simplement ** sous-chaîne pour découper les parties requises et c'est OK **.
Par exemple
http://localhost:8080/sample/top.jsp
Puisque vous n'avez pas besoin de la partie " http: // localhost: 8080 / sample
", vous pouvez couper uniquement /top.jsp en donnant ** substring (29) ** à l'URL.