Was ist der Unterschied zwischen @RequestBody und @RequestParam?
Ich habe die Spring-Dokumentation durchgesehen, um mehr über @ zu erfahre@RequestBody
, und sie haben die folgende Erklärung gegeben:
Das@RequestBody
method parameter annotation gibt an, dass ein Methodenparameter an den Wert des HTTP-Anforderungshauptteils gebunden werden soll. Beispielsweise
@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body, Writer writer) throws IOException {
writer.write(body);
}
Sie konvertieren den Anforderungshauptteil mit einem @ in das MethodenargumenHttpMessageConverter
. HttpMessageConverter
ist für die Konvertierung von der HTTP-Anforderungsnachricht in ein Objekt und die Konvertierung von einem Objekt in den HTTP-Antworttext verantwortlich.
DispatcherServlet
unterstützt annotationsbasierte Verarbeitung mit demDefaultAnnotationHandlerMapping
undAnnotationMethodHandlerAdapter
. Im Frühjahr 3.0 dasAnnotationMethodHandlerAdapter
wird erweitert, um das @ zu unterstütz@RequestBody
und hat das folgendeHttpMessageConverter
s standardmäßig registriert:
...
aber meine Verwirrung ist der Satz, den sie in dem Dokument geschrieben haben, das @ i
Die Anmerkung zum @RequestBody-Methodenparameter gibt an, dass ein Methodenparameter an den Wert des HTTP-Anforderungshauptteils gebunden werden soll.
Was meinen sie damit? Kann mir jemand ein Beispiel geben?
Das@RequestParam
Definition im Frühjahr doc ist
Annotation, die angibt, dass ein Methodenparameter an einen Webanforderungsparameter gebunden werden soll. Unterstützt für mit Annotationen versehene Handlermethoden inServlet
undPortlet
Umgebungen.
Ich bin verwirrt zwischen ihnen geworden. Bitte helfen Sie mir mit einem Beispiel, wie sie sich voneinander unterscheiden.