Unterschied zwischen redirect und anzeigen-rendering in Spring MVC
In das lernen über Spring MVC wissen, es gibt einige Dinge über federrücklauf Typen, die verwirren mich.
In dieser Dokumentation: Mapping-Anforderungen, Die Mit @RequestMapping Sie zurück appointments/new
und redirect:/appointments
.
Code
@RequestMapping(method = RequestMethod.POST)
public String add(@Valid AppointmentForm appointment, BindingResult result) {
if (result.hasErrors()) {
return "appointments/new";
}
appointmentBook.addAppointment(appointment);
return "redirect:/appointments";
}
Was ist der Hauptunterschied zwischen diesen beiden Typen zurückgegeben? Wie ich es verstehe, die erste Art gibt, wie eine forward-Aktion an, aber wenn ich im Recht bin, warum muss Sie auch veröffentlichen forward:/
als Rückgabetyp ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste gibt die Sicht, während die später leitet zu einer anderen controller-Anforderung zugeordnete Aktion. Lässt doch mal einen Blick aus dem code selbst.
Hier, wenn das Ergebnis Fehler, es rendert die Ansicht
appointments/new
so dass der Benutzer die richtigen Daten anzugeben und fügen Sie den apppointment wieder. URL wird sich nicht ändern in der browser -Aber hier, wenn die Ergebnisse hat keine Fehler, diese controller-action leiten Sie die Webseite zu der URL /Termine. Überprüfen Sie die web-browser URL, die geändert wird, um die umgeleitete URL
Bezüglich
forward:
vsredirect:
Zitiert aus diesem Satckoverflow Antwort Warum verwenden wir umleiten in Spring MVC
Die Umleitung Präfix im controller erzeugt eine HTTP-Antwort mit den 302 status-code und der location-header verweist auf die Umleitungs-URL. Der browser wird dann redirect auf diese URL (Modell ausgesetzt in der ersten Anforderung verloren geht, und die browser-URL wird die zweite).
Mithilfe der vorwärts-Präfix, der vorwärts wird getan werden intern durch das servlet, so gibt es keine Notwendigkeit, von einer zweiten Anfrage (URL bleibt gleich). Die vorwärts-Präfix sollte nur verwendet werden, Anfragen, die können sicher wiederholt durch den browser. Das ist nicht der Fall, wenn Sie senden ein Formular, das ändert den Zustand der Datenbank (Neuladen des Browsers führen wird, die Einsendungen zu vervielfältigen). In diesen Fällen sollten Sie verwenden, umleiten und wenden Sie die POST-redirect-GET-pattern.
Tun, eine Rückkehr der view-Namen, wie:
Nicht tun, ein forward oder ein redirect, statt es tatsächlich packt die Datei auf dem server und verarbeitet Sie, wie die browser-Ausgabe.
Zurückkehren, wenn Sie eine
"redirect:/somePath"
es ist tatsächlich das senden einer umleiten (nicht weiterleiten) an den browser. Eine Umleitung bewirkt eine Aktualisierung der Seite und passiert im browser und nach vorne passiert auf der server Seite und nicht ändern Sie Ihre URL.Se diese link.
Es wird erklärt, was der Unterschied zwischen umleiten und weiterleiten