wake-up-neo.com

Was ist der Unterschied zwischen response.sendRedirect () und request.getRequestDispatcher (). Forward (request, response)

Ich habe ein Problem mit meinem Seitensprung, wenn ich Java verwende, wenn ich Folgendes verwende:

response.sendRedirect("login.jsp")

dann bekomme ich diese url: http://localhost:8080/login.jsp

Aber wenn ich benutze

request.getRequestDispathcer("login.jsp").forward(request, response)

dann bekomme ich diese url: http://localhost:8080/Shopping/login.jsp (das "Shopping" ist der Name meines Moduls).

Was ist der Unterschied?

48
roger

Um den Unterschied einfach zu erklären,

  response.sendRedirect("login.jsp");

stellt den Kontextpfad nicht voran (bezieht sich auf die Anwendung/das Modul, in der/dem das Servlet gebündelt ist)

aber wohingegen

 request.getRequestDispathcer("login.jsp").forward(request, response);

wird den Kontextpfad der jeweiligen Anwendung voranstellen

Darüber hinaus wird Redirect request verwendet, um Ressourcen zu verschiedenen Servern oder Domänen umzuleiten. Diese Übertragung der Steuerungsaufgabe wird vom Container an den Browser delegiert. Das heißt, die Umleitung sendet einen Header zurück an den Browser/Client. Dieser Header enthält die Ressourcen-URL, die vom Browser umgeleitet werden soll. Dann leitet der Browser eine neue Anfrage an die angegebene URL ein.

Weiterleitungsanforderung wird verwendet, um an Ressourcen weiterzuleiten, die auf dem Server verfügbar sind, von dem aus der Anruf getätigt wird. Diese Übertragung der Kontrolle wird vom Container intern durchgeführt und der Browser/Client ist nicht beteiligt.

75
Keerthivasan

nach vorne

Die Steuerung kann an Ressourcen weitergeleitet werden, die auf dem Server verfügbar sind, von dem aus der Anruf getätigt wird. Diese Übertragung der Kontrolle wird vom Container intern durchgeführt und der Browser/Client ist nicht beteiligt. Dies ist der Hauptunterschied zwischen forward und sendRedirect. Wenn die Weiterleitung abgeschlossen ist, werden die ursprünglichen Anforderungs- und Antwortobjekte bei Bedarf zusammen mit zusätzlichen Parametern übertragen.

umleiten

Die Steuerung kann auf Ressourcen zu verschiedenen Servern oder Domänen umgeleitet werden. Diese Übertragung der Steuerungsaufgabe wird vom Container an den Browser delegiert. Das heißt, die Umleitung sendet einen Header zurück an den Browser/Client. Dieser Header enthält die Ressourcen-URL, die vom Browser umgeleitet werden soll. Dann leitet der Browser eine neue Anfrage an die angegebene URL ein. Da es sich um eine neue Anforderung handelt, geht das alte Anforderungs- und Antwortobjekt verloren.

Beispielsweise kann sendRedirect die Steuerung von http://google.com nach http://anydomain.com übertragen, aber forward kann dies nicht.

"Sitzung" geht nicht sowohl bei der Weiterleitung als auch bei der Umleitung verloren.

Um den Unterschied zwischen "forward" und "sendRedirect" zu erkennen, sehen Sie in der Adressleiste Ihres Browsers visuell. In "forward" wird die weitergeleitete Adresse (da der Browser nicht an der Weiterleitung beteiligt ist) nicht angezeigt. In "redirect" wird die weitergeleitete Adresse angezeigt.

17
Anish Rai

Einfacher Unterschied zwischen Forward (ServletRequest-Anforderung, ServletResponse-Antwort) und sendRedirect (String-URL) ist

forward ():

  1. Die Methode forward() wird serverseitig ausgeführt.
  2. Die Anforderung wird an eine andere Ressource auf demselben Server übertragen.
  3. Dies hängt nicht vom Anforderungsprotokoll des Clients ab, da die Methode forward () vom Servlet-Container bereitgestellt wird.
  4. Die Anforderung wird von der Zielressource gemeinsam genutzt.
  5. Bei dieser Methode wird nur ein Anruf verbraucht.
  6. Es kann innerhalb des Servers verwendet werden.
  7. Wir können die weitergeleitete Nachricht nicht sehen, sie ist transparent.
  8. Die forward () -Methode ist schneller als die sendRedirect() -Methode.
  9. Es wird in der Schnittstelle RequestDispatcher deklariert.

sendRedirect ():

  1. Die Methode sendRedirect() wird clientseitig ausgeführt.
  2. Die Anforderung wird an eine andere Ressource auf einen anderen Server übertragen.
  3. Die Methode sendRedirect() wird unter HTTP bereitgestellt, sodass sie nur mit HTTP Clients verwendet werden kann.
  4. Für die Zielressource wird eine neue Anforderung erstellt.
  5. Es werden zwei Anforderungs- und Antwortanrufe verbraucht.
  6. Es kann innerhalb und außerhalb des Servers verwendet werden.
  7. Wir können umgeleitete Adressen sehen, sie sind nicht transparent.
  8. Die Methode sendRedirect() ist langsamer, da beim Erstellen einer neuen Anforderung das alte Anforderungsobjekt verloren geht.
  9. Es wird in HttpServletResponse deklariert.
15
Maulik Kakadiya

1.Leiten Sie die Anforderung vom Server an den Browser zurück und senden Sie sie vom Browser erneut an den Server.

2.Senden Sie die Anfrage weiter an ein anderes Servlet (Servlet an Servlet).

5
sprite

Redirect und Request Dispatcher sind zwei verschiedene Methoden, um von einer Seite zur nächsten zu wechseln. Wenn wir die Umleitung auf eine neue Seite verwenden, geschieht tatsächlich eine neue Anforderung von der Clientseite selbst auf die neue Seite. So können wir die Änderung in der URL sehen. Da es sich bei der Umleitung um eine neue Anforderung handelt, sind die alten Anforderungswerte hier nicht verfügbar.

2
Lijo