it-swarm.com.de

Unterschied zwischen JSP-Weiterleitung und Weiterleitung

Bitte erläutern Sie den Unterschied zwischen jsp:forward und redirect.
Was ist jeweils los?

73
Ammu
  • redirect setzt den Antwortstatus auf 302 [1] und die neue URL in einem Location -Header und sendet die Antwort an den Browser. Anschließend fordert der Browser gemäß der http-Spezifikation die neue URL erneut an

  • die Weiterleitung erfolgt vollständig auf dem Server. Der Servlet-Container leitet die gleiche Anfrage einfach an die Ziel-URL weiter, ohne dass der Browser davon Kenntnis hat. Daher können Sie beim Umgang mit der neuen URL dieselben Anforderungsattribute und dieselben Anforderungsparameter verwenden. Und der Browser wird nicht wissen, dass sich die URL geändert hat (weil es vollständig auf dem Server passiert ist)


[1]: Dies ist ein Beispiel für eine Industriepraxis, die dem Standard widerspricht. Die HTTP/1.0-Spezifikation (RFC 1945) verlangte vom Client eine vorübergehende Umleitung (die ursprüngliche Beschreibungsphrase lautete "Vorübergehend verschoben"), aber gängige Browser implementierten 302 die Funktionalität eines 303 See Other. Daher fügte HTTP/1.1 die Statuscodes 303 und 307 hinzu, um zwischen den beiden Verhalten zu unterscheiden. Einige Webanwendungen und Frameworks verwenden den 302-Statuscode jedoch so, als wäre er der 303. Source

136
Bozho

Ich habe interessante Erklärungen zu Weiterleitung und Weiterleitung gehört. Stellen Sie sich vor, Sie brauchen einen Service von Ihrem Freund. Es ist egal, welchen Service. Angenommen, Ihr Freund kann Ihnen nicht helfen, weiß aber, wer kann.

Er würde Ihre Anfrage umleiten, wenn er Ihnen sagen würde: "Ich kann das nicht, aber ich weiß, wer kann. Hier seine Telefonnummer. Rufen Sie ihn an."

Er würde Ihre Anfrage WEITERLEITEN, wenn er Ihnen sagen würde: "Kein Problem" und diesen Mann alleine anruft, ohne Sie darüber zu benachrichtigen, dass Sie eine andere Person in die Bearbeitung Ihres Wunsches einbezogen haben. Dann wird Ihr Freund das Ergebnis erhalten, Ihren Wunsch zu sortieren und an Sie weiterzuleiten.

35
Sobik

Die Umleitung ist auch langsamer als die Weiterleitung, da sie den Browser durchlaufen und warten muss, bis der Browser eine neue Anforderung eingeht. Daher sind Anforderungsbereichsobjekte nach der Umleitung nicht mehr verfügbar.

11
rmartinus

Weiterleiten:

  1. Benutzer fordert eine Ressource an.
  2. Antwort an den Benutzer gesendet.
  3. Dies ist nicht die angeforderte Ressource. Dies ist eine Antwort mit dem HTTP-Code 302 und enthält die URL der angeforderten Ressource.
  4. Die URL kann gleich oder verschieden von der angeforderten URL sein.
  5. Der Client-Browser fordert die Ressource erneut mit der neuen URL an, diesmal wird die tatsächliche Ressource an den Benutzer gesendet.

Nach vorne:

Dabei wird dem Benutzer lediglich die angeforderte Ressource angezeigt. Es geschieht ausschließlich auf der Serverseite.

6
Nishant

Dieser Beitrag gibt eine wirklich gute Erklärung über Forward vs. Redirect anhand eines Nice-Beispiels aus der realen Welt.

Der Milchmann kommt und bittet Sie um eine monatliche Zahlung in Ihrem Haus. Hier ist das Haus der Container und Sie sind eine Ressource, die im Container vorhanden ist. Milchmann ist der Client oder Browser.

Er bittet Sie um die monatliche Zahlung. Dies ist die Aufforderung des Browsers an die Ressource A. Wenn Sie in Ihr Haus gehen und Ihre Mutter (eine andere Ressource B in demselben Container) um Bargeld bitten, kommen Sie zurück und liefern Sie an den Milchmann das nennt man vorwärts.

Wenn Sie den Milchmann bitten, sich mit Ihrer Mutter in Ihrem Haus zu unterhalten, oder wenn Sie den Milchmann bitten, mit Ihrem Vater zu sprechen, der sich in seinem Büro befindet (andere Domäne), wird dies als Umleitung bezeichnet.

3
aravindaM
+-------------------------------------------------------------------------+-----------------------------------------------------------------------------+
|                             Forwards   vs.                              |                                  Redirects                                  |
+-------------------------------------------------------------------------+-----------------------------------------------------------------------------+
| ServletContext.getRequestDispatcher(location).forward(request,response) | httpServletResponse.sendRedirect(location)                                  |
| Communication between pages directly                                    | Communication b/w pages are indirectly by extra round trip from HTTP client |
| Communication happens within web-container                              | Communication happens outside web-container                                 |
| Use same Request and Response Object                                    | Use different Request and Response Object                                   |
+-------------------------------------------------------------------------+-----------------------------------------------------------------------------+
1
Premraj

Wenn Sie eine Anfrage weiterleiten,

-Anfrage- und Antwortobjekte werden übertragen. -url bleibt gleich.

Wenn Sie die Anforderung an eine andere JSP/Servlets umleiten,

-Anfrage- und Antwortobjekte werden nicht auf ein neues Objekt übertragen. -Url wechselt in das Verzeichnis der neuen Seite.

0
Buskeek