1.RequestDispatcher.forward()
funktioniert auf der Serverseite. Bei Verwendung von forward() leitet die Servlet-Engine die HTTP-Anfrage vom aktuellen Servlet oder der aktuellen JSP an ein anderes Servlet, eine andere JSP oder eine normale HTML-Datei weiter, d. h. an diese wird Ihr Formular gesendet a.jsp, forward() wird in a.jsp verwendet, um zu b.jsp umzuleiten. Zu diesem Zeitpunkt können alle vom Formular übermittelten Informationen in b.jsp abgerufen werden, und die Parameter werden automatisch übergeben.
Forward() kann jedoch nicht zu einer JSP-Datei mit einem Frame umleiten. Gleichzeitig kann forward() nicht mit Parametern am Ende übergeben werden, z. B. servlet?name=frank . Wenn dies nicht funktioniert, können Sie die Antwort im Programm .setAttribute("name",name) übergeben, um sie an die nächste Seite weiterzuleiten.
Beispiel
: Umleitung im Servlet
Codeinhalte werden normalerweise in Servlets und nicht in JSP verwendet.
public void doPost(HttpServletRequest-Anfrage, HttpServletResponse-Antwort)
wirft ServletException,IOException ...{
Response.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/index.jsp"); //Geleitete Seite
rd.forward(Anfrage, Antwort);
}
2.response.sendRedirect()
Es funktioniert im Browser des Benutzers. Gleichzeitig kann sendRedirect() Frames an die nächste Seite weiterleiten.
Nach der Umleitung wird die URL der umgeleiteten Seite in der Adressleiste des Browsers angezeigt.
Beispiel: Umleitung im Servlet
Codeinhalt
public void doPost(HttpServletRequest request,HttpServletResponse Response)
throws ServletException,IOException ...{
Response.setContentType("text/html; charset=gb2312");
Response.sendRedirect("/index.jsp")
;
Da die Antwort ein implizites Objekt auf der JSP-Seite ist, kann Response.sendRedirect() verwendet werden, um eine Verschiebung direkt auf der JSP-Seite zu implementieren.
Hinweis:
(1) Bei Verwendung von Response.sendRedirect kann keine HTML-Ausgabe erfolgen.
Dies gilt nicht unbedingt, da keine HTML-Ausgabe an den Browser gesendet werden kann. Tatsächlich verfügen heutige Server über einen Cache-Mechanismus, normalerweise 8 KB (ich meine JSP SERVER). Dies bedeutet, dass vor der Verwendung von sendRedirect eine kleine Menge vorhanden ist, es sei denn, Sie deaktivieren den Cache oder verwenden out.flush(), um eine Aktualisierung zu erzwingen der HTML-Ausgabe ist ebenfalls zulässig.
(2) Auf .response.sendRedirect sollte eine Rückgabe folgen.
Wir wissen bereits, dass Response.sendRedirect über den Browser umgeleitet wird, sodass keine tatsächliche Aktion erfolgt, bis die Seitenverarbeitung abgeschlossen ist. Welche Bedeutung hat das Endergebnis, nachdem Sie die Steuerung bereits vorgenommen haben? Und es ist möglich, dass die Lenkung durch den nachträglichen Abtrieb versagt.
Vergleichen:
(1).Request Dispatcher.forward() ist die Umleitung der Steuerung im Container, und die umgeleitete Adresse wird nicht in der Adressleiste des Client-Browsers angezeigt;
(2).response.sendRedirect() ist ein vollständiger Sprung. Der Browser erhält die Sprungadresse und sendet den Anforderungslink erneut. Dadurch ist die Linkadresse nach dem Sprung in der Adressleiste des Browsers ersichtlich.
Ersteres ist effizienter, wenn Ersteres die Anforderungen erfüllen kann.
Hinweis: In einigen Fällen, beispielsweise wenn Sie zu einer Ressource auf einem anderen Server springen müssen, müssen Sie die Methode verwenden HttpServletResponse.sendRequest()-Methode.
3.<jsp:forward page="" />
Der zugrunde liegende Teil wird von RequestDispatcher implementiert und trägt daher den Aufdruck der Methode RequestDispatcher.forward(). Wenn vor <jsp:forward> viele Ausgaben vorliegen und die vorherige Ausgabe den Puffer voll gemacht hat und automatisch an den Client ausgegeben wird, funktioniert diese Anweisung nicht. Darauf sollte besonders geachtet werden.
Beachten Sie außerdem: Die Aktualisierung der Browseradresse führt zu wiederholten Übermittlungen.
4. Ändern Sie das Standortattribut des HTTP-Headers, um umzuleiten.
Leiten Sie die Seite um, indem Sie die Adressleiste direkt ändern.
Der JSP-Dateicode lautet wie folgt:
Codeinhalt: 5. JSP implementiert die automatische Umleitung auf eine andere Seite, nachdem einige Sekunden auf einer bestimmten Seite verweilt wurde.
In der HTML-Datei der folgende Code:
<meta http-equiv="refresh" content="300; url=target.jsp">
Was es bedeutet: Nach 5 Minuten wechselt die Seite, die Sie durchsuchen, automatisch zur Seite target.html. 300 im Code ist die Aktualisierungsverzögerungszeit in Sekunden. target.html ist die Zielseite, zu der Sie umleiten möchten. Wenn es sich um diese Seite handelt, wird diese Seite automatisch aktualisiert.
Wie oben zu sehen ist, können Sie setHeader verwenden, um automatisch auf eine andere Seite umzuleiten, nachdem Sie einige Sekunden auf einer Seite verweilt haben.
Schlüsselcode:
Codeinhalt
<%
Response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
Response.setHeader("Location",newLocn);
%>
String content=stayTime+";URL="+URL;
Response.setHeader("REFRESH",content);