Es gibt mehrere Bildschirme und Servlets, die zusammen eine Java-basierte Webanwendung bilden. Eine JSP übergibt die Steuerung von einem Servlet an ein anderes Servlet oder eine andere JSP. Dabei werden zwei Methoden verwendet: Weiterleiten und Umleiten. Die Forward-Methode leitet eine Anfrage von einem Servlet an eine andere Ressource in einer Webanwendung weiter. Diese Ressource kann ein anderes Servlet, eine JSP-Seite oder eine HTML-Datei sein.
Die Umleitungsmethode leitet die Anfrage dagegen an eine andere Anwendung weiter. Sie können dies nicht mit einer Forward-Methode tun. Wenn eine Umleitung in derselben Anwendung auf eine andere Ressource trifft, verwendet sie eine andere URL als die ursprüngliche Anforderungs-URL. Wenn Sie auf eine Anfrage nicht antworten möchten, können Sie die Anfrage an eine andere URL umleiten. Der Browser sendet dann die neue Anfrage an die von Ihnen angegebene URL. Dieser Beitrag hebt einige Unterschiede hervor, die die beiden Methoden im Detail erklären.
In webbasierten Systemen oder Anwendungen muss häufig die Steuerung zwischen verschiedenen Ressourcen oder JSPs übertragen werden. Wenn Sie beispielsweise eine Bestellung über eine E-Commerce-Site aufgeben möchten, müssen Sie sich zuerst registrieren, bevor Sie fortfahren können. Wenn Sie noch nicht bei ihrem System registriert sind, muss der Warenkorb möglicherweise die Kontrolle an das JSP-Formular übertragen, das für den Registrierungsprozess verantwortlich ist. Die Vorwärtsaktion wird speziell für diesen Zweck verwendet. Es wird verwendet, um die Anforderung von einer JSP an eine andere oder andere Ressource innerhalb desselben Kontexts weiterzuleiten.
Diese Methode wird auch zum Weiterleiten von HTTP-Anforderungen verwendet. Im Gegensatz zu einer Weiterleitung handelt es sich dabei jedoch um einen zweistufigen Prozess, bei dem die Weiterleitung auf der Clientseite vollständig zu einer anderen Anwendung erfolgt. Die Umleitungsmethode leitet den Benutzer auf eine neue URL um. Der Browser des Clients stellt die neue Anforderung automatisch an die URL, die im Umleitungsheader angegeben ist, der vom Server kommt. Es erfordert eine Round-Trip-Kommunikation mit dem Client und ist daher relativ langsamer als ein Forward.
Mit der forward () - Methode wird die Anforderung von einer JSP an eine andere oder von einer JSP an ein Servlet oder von einer JSP an eine andere Ressource in einer Webanwendung weitergeleitet. Die Kontrolle wird intern vom Container übergeben und der Browser / Client ist nicht in den Prozess einbezogen. Die Forward-Methode wird im RequestDispatcher deklariert. Die SendRedirect () - Methode ist in HttPServletResponse deklariert und wird verwendet, um die Clientanforderung an eine andere URL umzuleiten, die auf einem anderen Server oder Kontext verfügbar ist. Mit einer Weiterleitung können Sie den Browser insgesamt zu einer anderen Anwendung umleiten.
Einer der Hauptunterschiede zwischen den beiden Methoden besteht darin, dass der Webcontainer alle Vorgänge intern verarbeitet, wenn forward () ausgeführt wird. Die URL ändert sich nicht im Browser des Clients, sodass der Client / Browser nicht daran beteiligt ist und diese Informationen nicht vollständig wahrnimmt Aktion hat bereits stattgefunden. Im Falle von SendRedirect () setzt die Methode die entsprechenden Header und den Rumpfinhalt, um die Anfrage an eine andere URL umzuleiten, und der Browser sorgt dafür, dass die neue Anfrage an die für den Client sichtbare URL gesendet wird, wenn sich die URL im Browser ändert.
Wenn die forward () -Methode zum Anforderungszeitpunkt ausgeführt wird, wird die aktuelle Anforderung an eine andere JSP-Seite weitergeleitet und die Verarbeitung der aktuellen JSP wird beendet. Die Anforderung kann an ein in der Java-Programmiersprache geschriebenes Servlet oder an eine statische HTML-Seite weitergeleitet werden. Eine SendRedirect () -Anforderung fordert den Browser lediglich auf, zu einer anderen URL zu wechseln, wodurch die Ausführungssteuerung außerhalb der Webanwendung gesendet wird. In einem zweistufigen Prozess wird die URL des Browsers angewiesen, eine weitere Anfrage zu stellen, die die Kontrolle an den Client überträgt.
Ein forward () arbeitet innerhalb des Servers und ist schneller als ein SendRedirect (). Eine Umleitung muss den Browser durchlaufen und warten, bis der Browser eine neue HTTP-Anforderung erstellt. Eine Umleitung veranlasst den Server, den HTTP-Antwortstatuscode 302 mit einem Standortheader, der eine neue URL enthält, an den Browser zu senden, und nachdem der Browser den Statuscode 302 erhalten hat, stellt er eine neue Anfrage an die im Standortheader gefundene URL. Dies erfordert eine Round-Trip-Kommunikation mit dem Client, wodurch es relativ langsamer ist als ein Forward ()..
Das Erkennen des Unterschieds zwischen den Vorwärts- und Weiterleitungsmethoden ist eine der wichtigsten Komponenten für Java-Entwickler. Während ein Controller am Ende der Verarbeitung einer Anforderung entweder eine Vorwärts- oder eine Umleitungsmethode ausführen kann, hat er eine eigene Verwendung. Meistens verwenden Sie eine forward () -Methode, da sie geringfügig schneller ist als ein SendRedirect (), das tatsächlich eine Round-Trip-Kommunikation mit dem Client erfordert, wodurch es langsamer als ein Forward wird. Mit einer Weiterleitung können Sie den Browser an eine andere Anwendung weiterleiten. Dies ist nicht mit einem Forward möglich. Kurz gesagt, eine Weiterleitung funktioniert am besten, wenn eine Komponente Geschäftslogik ausführen und die Ergebnisse mit einer anderen Komponente teilen muss. Eine Weiterleitung funktioniert am besten, wenn der Client von einer Seite auf eine andere Seite umgeleitet werden soll.