Notieren Sie sich, wie Sie die URL der Übergangsquelle erhalten. Dieses Mal habe ich beim Erstellen der Anmeldefunktion, wenn die Anmeldung erfolgreich war, damit zu der Seite gewechselt, die vor der Anmeldung geöffnet war (die Seite, auf der die Anmeldeschaltfläche gedrückt wurde).
Der Fluss ist wie folgt.
Die Seite, die vor der Anmeldung geöffnet war (jsp) ↓ Login.java (** Ruft die URL der Seite ab, die vor der Anmeldung geöffnet war **, Übergang zum Anmeldeformular) ↓ login.jsp (Anmeldeformular) ↓ LoginCheck.java (Bestimmen Sie, ob Sie sich anmelden können. ** Extrahieren Sie die URL der Seite, die vor der Anmeldung geöffnet war. **) ↓ Seite, die vor der Anmeldung geöffnet war (kehren Sie zu dieser Seite zurück, wenn die Anmeldung erfolgreich ist)
Verwenden Sie abschließend die ** getHeader-Methode **, um den ** Referer ** des Anforderungsheaders abzurufen.
//Rufen Sie die Übergangsquell-URL der Anforderungsheaderinformationen ab
request.getHeader("REFERER");
Dieses Mal verwenden wir eine Sitzung, um die erfasste URL zu speichern. Wenn die Anmeldung erfolgreich ist, rufen wir sie ab und wechseln.
Login.java
//Erfasst die Übergangsquell-URL der Anforderungsheaderinformationen und speichert sie in der Sitzung
session.setAttribute("referer", request.getHeader("REFERER"));
request.getRequestDispatcher("/login.jsp").forward(request, response);
LoginCheck.java
//Extrahieren Sie nach erfolgreicher Anmeldung die URL der Übergangsquelle aus der Sitzung und dem Übergang
String url = (String)session.getAttribute("referer");
request.getRequestDispatcher(response.encodeURL(url).substring(29)).forward(request, response);
Als ich vor dem Anmelden versuchte, von LoginCheck.java auf die Seite zu wechseln, bekam ich einen 404-HTTP-Fehler und hatte Schwierigkeiten. Der Grund dafür ist, dass die vom Referer erhaltene URL die gesamte URL ist. Daher habe ich versucht, durch Angabe unnötiger Teile weiterzuleiten. Die Problemumgehung ist einfach. Verwenden Sie einfach ** Teilzeichenfolge, um die erforderlichen Teile auszuschneiden, und es ist in Ordnung **.
Zum Beispiel
http://localhost:8080/sample/top.jsp
Da Sie den Teil " http: // localhost: 8080 / sample
"nicht benötigen, können Sie nur /top.jsp ausschneiden, indem Sie der URL ** Teilzeichenfolge (29) ** geben.