@Controller和@RestController的區別(轉)


@Controller和@RestController的區別?

官方文檔: @RestController is a stereotype annotation that combines 
@ResponseBody and @Controller.

意思是: 
@RestController注解相當於@ResponseBody + @Controller合在一起的作用。


  • 在@controller注解中,返回的是字符串,或者是字符串匹配的模板名稱,即直接渲染視圖,與html頁面配合使用的, 
    在這種情況下,前后端的配合要求比較高,java后端的代碼要結合html的情況進行渲染,使用model對象(或者modelandview)的數據將填充user視圖中的相關屬性,然后展示到瀏覽器,這個過程也可以稱為渲染

  • 而在@restcontroller中,返回的應該是一個對象,即return一個user對象,這時,在沒有頁面的情況下,也能看到返回的是一個user對象對應的json字符串,而前端的作用是利用返回的json進行解析渲染頁面,java后端的代碼比較自由。


1)如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp頁面,配置的視圖解析器InternalResourceViewResolver不起作用,返回的內容就是Return 里的內容。 
例如:本來應該到success.jsp頁面的,則其顯示success.

2)如果需要返回到指定頁面,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行。

3)如果需要返回JSON,XML或自定義mediaType內容到頁面,則需要在對應的方法上加上@ResponseBody注解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM