Spring MVC學習筆記(三)

使用@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將返回對象轉換到響應體中。對象

相關文章
相關標籤/搜索