In Java Es gibt zwei Möglichkeiten, Sprünge zu implementieren: Anforderungsweiterleitung und Anforderungsumleitung, aber die beiden sind völlig unterschiedlich, daher werden wir sie heute besprechen.
Die Hauptunterschiede zwischen Anforderungsweiterleitung und Anforderungsumleitung umfassen die folgenden 5 Punkte:
Unterschiedliche Definitionen
Unterschiedliche Sprungparteien
Unterschiedliche Datenfreigabe
Die endgültige URL-Adresse ist unterschiedlich
Die Code-Implementierung ist anders
Als nächstes schauen wir uns das einzeln an.
Anfrageweiterleitung (Weiterleitung): Erfolgt innerhalb des Serverprogramms. Wenn der Server eine Anfrage vom Client empfängt, leitet er die Anfrage zunächst an die Zieladresse weiter und gibt dann das Ergebnis des Ziels zurück Adresse An den Kunden weitergeleitet. Der Kunde ist sich dessen nicht bewusst. Das ist so, als würde Zhang San (Kunde) Geld von Li Si (Server) leihen, und Li Si hat kein Geld, also geht Li Si zu Wang Wu, um Geld zu leihen, und leiht Zhang Geld San, Zhang San hat sich im gesamten Prozess nur einmal Geld geliehen, und Li Si hat den Rest erledigt. Dies ist eine Bitte um Weiterleitung. **Anfrageumleitung (Redirect): Anfrageumleitung bedeutet, dass der Server, nachdem er die Anfrage des Clients empfangen hat, einen temporären Antwortheader an den Client zurückgibt. Dieser temporäre Antwortheader zeichnet auf, dass der Client die Anfrage erneut senden muss (Redirect) URL-Adresse . Nachdem der Client die Adresse erhalten hat, sendet er die Anfrage an die neue Adresse. Dies ist eine Anfrageumleitung. **Das ist, als würde Zhang San (Kunde) Li Si (Server) bitten, sich Geld zu leihen, also sagt Li Si zu Zhang San: „Ich habe kein Geld, du gehst zu Wang Wu, um dir Geld zu leihen.“ Zhang San Ich ging erneut zu Wang Wus Haus und borgte mir Geld. Dies war eine Bitte um Weiterleitung.
Aus den obigen Definitionen der Anforderungsweiterleitung und Anforderungsumleitung können wir Folgendes erkennen: Die Anforderungsweiterleitung ist ein serverseitiges Verhalten. Der Server sendet die Anforderung im Namen des Clients und sendet sie zurück Das Ergebnis ist das Verhalten des Clients. Der Interaktionsprozess ist wie in der folgenden Abbildung dargestellt: Die Datenfreigabe ist unterschiedlich Seite, also während des gesamten Ausführungsprozesses, muss der Client (Browserseite) nur einmal eine Anfrage senden, sodass im gesamten Interaktionsprozess, also während des gesamten Anfrageprozesses, dasselbe Request-Anfrageobjekt und ein Antwort-Antwortobjekt verwendet werden , die Anfrage und die zurückgegebenen Daten werden gemeinsam genutzt und die Anfrage wird wiederholt. Senden Sie zwei völlig unterschiedliche Anfragen an den Client, sodass die Daten in den beiden Anfragen unterschiedlich sind. 4. Die endgültige URL-Adresse ist unterschiedlich. Die Anforderungsweiterleitung erfolgt, wenn der Server die Anforderung stellt und das Ergebnis dann an den Client zurückgibt. Die URL-Adresse bleibt also während des gesamten Anforderungsprozesses unverändert Der Client sagt: „Sie besuchen einen anderen Ort“, sodass der Browser die Anforderung erneut sendet. Die vom Client schließlich angezeigte URL ist also auch die endgültige Sprungadresse und nicht die Adresse der ursprünglichen Anforderung, sodass sich die URL-Adresse geändert hat . 5. Die Codeimplementierung ist anders
In SpringBoot lautet der Implementierungscode für die Anforderungsweiterleitung wie folgt:
@RequestMapping("/fw") public void forward(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/index.html").forward(request, response); }
Und der Implementierungscode für die Anforderungsumleitung lautet wie folgt:
@RequestMapping("/rt") public void redirect(HttpServletRequest request, HttpServletResponse response) throws IOException { response.sendRedirect("/index.html"); }
Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen der Java-Anforderungsweiterleitung und der Anforderungsumleitung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!