Servlet:
Natürlich treten in Servlets im Allgemeinen Sprünge in doGet, doPost und anderen Methoden auf.
1) Umleitungsmethode
Response.sendRedirect("/a.jsp");
Der Pfad zur Seite ist ein relativer Pfad. sendRedirect kann zu jeder Seite springen, nicht unbedingt auf diese Webanwendung beschränkt, wie zum Beispiel:
Response.sendRedirect("//www.VeVB.COm");
Die Adressleiste des Browsers ändert sich nach dem Sprung.
Wenn Sie den Wert auf diese Weise übergeben möchten, können Sie den Parameter nur in die URL einfügen oder in die Sitzung einfügen. Sie können ihn nicht mit request.setAttribute übergeben.
2) Vorwärtsmethode
RequestDispatcher-Dispatcher = request.getRequestDispatcher("/a.jsp");
Dispatcher .forward(Anfrage, Antwort);
Der Pfad zur Seite ist ein relativer Pfad. Die Forward-Methode kann nur zu Seiten in dieser Webanwendung springen.
Die Adressleiste des Browsers ändert sich nach dem Sprung nicht.
Wenn Sie diese Methode zum Springen verwenden, können Sie drei Methoden zum Übergeben von Werten verwenden: Parameter, Sitzung und request.setAttribute in der URL
JSP:
1) Antwort.sendRedirect();
Dieselbe Methode wie Response.sendRedirect() des Servlets.
Out.flush() ist vor dieser Anweisung nicht zulässig. Wenn dies der Fall ist, tritt eine Ausnahme auf:
java.lang.IllegalStateException: SendRedirect() kann nicht gesendet werden, nachdem Daten an den Client übermittelt wurden.
unter com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
Die Adressleiste des Browsers ändert sich nach dem Sprung
Wenn Sie zu einem anderen Host springen möchten, werden die auf diese Anweisung folgenden Anweisungen nach dem Sprung weiterhin ausgeführt, als ob ein neuer Thread geöffnet worden wäre. Der Antwortvorgang ist jedoch bedeutungslos.
Wenn Sie zum selben Host springen möchten, erfolgt der Sprung erst, wenn die auf diese Anweisung folgenden Anweisungen ausgeführt werden.
2) Response.setHeader("Location","");
Out.flush() ist vor dieser Anweisung nicht zulässig. Wenn dies der Fall ist, wird die Seite nicht gesprungen.
Die Adressleiste des Browsers ändert sich nach dem Sprung
Der Sprung erfolgt erst, wenn die auf diese Anweisung folgenden Anweisungen ausgeführt werden.