1. 程式人生 > 其它 >測試開發進階——spring boot——MVC——@restcontroller和@controller的區別

測試開發進階——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註解。