2015-01-12 9 views

Antwort

6

Grob gesagt, Redirect wird eine HTTP-Umleitung (mit dem Header-Speicherort) tun. Dies bedeutet, dass der Browser des Clients die Seite ändert. Es wird zu einem neuen Routing verarbeitet (es kann auch verwendet werden, um zu einer anderen Website zu gehen), und das eigentliche Skript wird beendet.

Während Forward intern ist, sieht der Browser des Clients keinen Unterschied, Sie führen nur einen anderen Controller aus. Die Dispatch-Schleife ermöglicht dem Benutzer, den Ausführungsfluss an einen anderen Controller/eine andere Aktion weiterzuleiten. Dies ist sehr nützlich, um zu überprüfen, ob der Benutzer auf bestimmte Optionen zugreifen kann, Benutzer zu anderen Bildschirmen umleiten oder einfach Code wiederverwenden kann. Denken Sie jedoch daran, dass das "Weiterleiten" nicht dasselbe ist wie das Erstellen einer HTTP-Weiterleitung. Obwohl sie anscheinend das gleiche Ergebnis hatten. Das "Weiterleiten" lädt die aktuelle Seite nicht neu, die Umleitung erfolgt in einer einzigen Anforderung, während die HTTP-Umleitung zwei Anforderungen benötigt, um den Prozess abzuschließen.

ähnliche Analogie kann auch in JSP gezeigt werden,

Die sendRedirect(String path) Methode von HttpServletResponse wird den Kunden sagt, dass es eine Anforderung an den angegebenen Pfad senden soll. Der Client erstellt eine neue Anfrage und sendet sie an den Server. Der Verlauf des Clients wird aktualisiert, sodass die Schaltflächen "Vorwärts" und "Zurück" funktionieren. Diese Methode ist nützlich, um auf Seiten anderer Server und Domänen umzuleiten.

Die Forward-Methode von RequestDispatcher leitet die ServletRequest und ServletResponse, die es auf den Pfad geleitet wird, die an den Client gesendet wird, in getRequestDispatcher(String path). Die Antwort angegeben wurde nicht zurück und so wird der Kunde nicht über diese Änderung der Ressource kennt auf der Server. Diese Methode ist nützlich für die Kommunikation zwischen Serverressourcen (Servlet zu Servlet). Diese Methode ist schneller als die Verwendung von sendRedirect, da kein Netzwerk-Roundtrip zum Server und zurück erforderlich ist.

Verwandte Themen