使用@RequestBody註解映射request bodyjava
方法參數註解@RequestBody代表方法參數將被綁定到HTTP請求體中。例如
數組
@RequestMapping(value="/something", method=RequestMethod.PUT) public void handle(@RequestBody String body, Writer writer) throws IOException{ writer.write(body); }
使用HttpMessageConverter將請求體轉換爲方法參數。HttpMessageConverter負責將HTTP請求信息轉換成對象,將對象轉換成HTTP響應體。RequestMappingHandlerAdapter使用默認的HttpMessageConverters支持@RequestBody註解。app
ByteArrayHttpMessageConverter轉換字節數組。
StringHttpMessageConverter轉換字符串。
FormHttpMessageConverter轉換表單數據。
SourceHttpMessageConverter轉換javax.xml.transform.Source。code
一個@RequestBody方法參數可使用@Valid註解,這樣將使用已配置的Validator實體校驗。
相似於使用@ModelAttribute參數,Errors argument能夠被用做檢查錯誤。若是argument沒有聲明,將會產生MethodArgumentNotValidException。該異常由DefaultHandlerExceptionResolver處理,返回客戶端404錯誤。orm
使用@ResponseBody註解映射響應體
@ResponseBody註解相似於@RequestBody。該註解表示方法的返回類型是直接寫到HTTP響應體中。示例
xml
@RequestMapping(value="/something", method=RequestMethod.PUT) @ResponseBody public String helloWorld(){ retrun "Hello World";
以上示例中結果文本Hello World將直接寫到響應流中。
對於@RequestNody,Spring使用HttpMessageConverter將返回對象轉換到響應體中。對象