Die Programmiersprache Java ist weit verbreitet für die Programmierung auf dem Desktop , Mobile und Server-Umgebungen eingesetzt . Wenn ein Benutzer die Daten aus einem Formular oder klickt auf den Link zu einer Web -Adresse vorträgt, können Java- Programmierer verwenden den Servlet -Klasse , um zu bestimmen , wie der Server - Seite der Anwendung auf diese Anforderung reagiert . Ein Servlet können Antworten durch Umleitung und Weiterleitung zu stellen. Es ist wichtig für Java-Programmierer die Ähnlichkeit und Unterschiede zwischen den beiden Methoden zu verstehen und zu wissen, was man verwenden je nach ihren Bedürfnissen . Similarity
Sowohl Weiterleitung und Umleitung bietet eine Möglichkeit , die ein Java- Servlet , um die Verarbeitung von Daten des Benutzers auf einen anderen Controller übertragen innerhalb einer Web -Anwendung ermöglicht . In der Model-View- Controller-Muster , die üblicherweise für Java Web -Anwendungen verwendet wird, kann ein Controller mit anderen Controllern interagieren und verwaltet die Interaktionen zwischen den Ansichten und der Modelle. Normalerweise wird ein Controller ist ein weiteres Java Servlet , aber es kann auch eine JSP-Seite sein .
Unterschiede
Die Weiterleitung Wirkung beruht auf der Server-Seite ausgeführt und ist transparent für der Web-Browser auf der Client-Seite . Dies bedeutet, dass die URL in der Adressleiste des Web-Browsers wird sich nicht ändern , wenn die Umleitung erfolgt . Im Gegensatz dazu ist die Umleitung Aktion auf der Client - Seite erfolgen . Umleitung erfolgt in zwei Schritten , da der Server muss den Web -Browser auf der Client-Seite zu beauftragen, eine andere Adresse zu holen , dass es auf Umleiten . Als Ergebnis , wird die URL in der Adressleiste nach Umleitung ändern. Darüber hinaus kann nicht Weiterleitung auf eine andere URL außerhalb der Webanwendung befinden getan werden beim Weiterleiten auf allen Standorten überall getan werden kann.
Nutzungen
Forwarding nutzt die RequestDispatcher Klasse, die von der " getServletContext ()" -Methode des Servlet erhalten. Um vorwärts , die Methode " forward () " aus dem " RequestDispatcher Klasse heißt zum Beispiel der folgende Code die Antwort auf eine andere Seite aufgerufen result.jsp übermitteln : .
String destination = " /WEB -INF /pages /result.jsp ";
RequestDispatcher rd = getServletContext () getRequestDispatcher (Ziel) ; .
rd.forward ( Request, Response );
Weiterleitung verwendet das " sendRedirect ()" -Methode des Response-Objekt , das von der aktuellen Servlet -Klasse erhalten wird, zum Beispiel der folgende Code die Antwort auf eine andere Seite umleiten destination.jsp genannt : .
String destination = " /jsp /destination.jsp ";
response.sendRedirect ( response.encodeRedirectURL (Ziel) );
Überlegungen
Die Umleitung Betrieb ist etwas langsamer als Weiterleiten da der Web-Browser muss zwei Operationen durchzuführen , um die Adresse vor und nach der Umlenkung zu holen. Außerdem sind alle Objekte in der ursprünglichen Anforderung Rahmen übertragen noch verfügbar bei der Weiterleitung wird im Laufe Umleiten verloren. Als solche Umleitung nur verwendet werden wenn der Browser erlaubt ist , um die resultierende Adresse nach Umleitung zu laden. In anderen Fällen sollte Weiterleitung verwendet werden.