測試開發進階——spring boot——MVC——@restcontroller和@controller的區別
@RestController註解,相當於@Controller+@ResponseBody兩個註解的結合,返回json資料不需要在方法前面加@ResponseBody註解了;
但使用@RestController這個註解,就不能返回jsp,html頁面,檢視解析器無法解析jsp,html頁面
===========================================================================================================
@ResponseBody 表示該方法的返回結果直接寫入 HTTP response body 中,一般在非同步獲取資料時使用【也就是AJAX】,
在使用 @RequestMapping後,返回值通常解析為跳轉路徑,但是加上 @ResponseBody 後返回結果不會被解析為跳轉路徑,而是直接寫入 HTTP response body 中。
比如非同步獲取 json 資料,加上 @ResponseBody 後,會直接返回 json 資料。
@RequestBody 將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個物件。
============================================================================================================
@RestController註解相當於@ResponseBody + @Controller合在一起的作用。
1) 如果只是使用@RestController註解Controller,則Controller中的方法無法返回jsp頁面,或者html,
配置的檢視解析器 InternalResourceViewResolver不起作用,返回的內容就是Return 裡的內容。
2) 如果需要返回到指定頁面,則需要用 @Controller配合檢視解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定義mediaType內容到頁面,則需要在對應的方法上加上@ResponseBody註解。
3)如果需要返回JSON,XML或自定義mediaType內容到頁面,則需要在對應的方法上加上@ResponseBody註解。