關(guān)于@Controller和@Restcontroller的那點奇葩事
@Controller和@Restcontroller
直接甩正事
我要返回如下頁面路徑:
控制層的注解為上圖時,結(jié)果正常:
但注解的@Controller若是變?yōu)榱薂Restcontroller了呢
結(jié)果如下:
后來的經(jīng)驗總結(jié)
RestController相當(dāng)于Controller+ResponseBody注解
如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp頁面,或者html,配置的視圖解析器 ,也就是相當(dāng)于在方法上面自動加了ResponseBody注解,所以沒辦法跳轉(zhuǎn)并傳輸數(shù)據(jù)到另一個頁面,所以InternalResourceViewResolver也不起作用,返回的內(nèi)容就是Return 里的內(nèi)容,即數(shù)據(jù)直接甩在當(dāng)前請求的頁面上,適用于ajax異步請求。
如果需要返回到指定頁面,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行
@Controller和@RestController的區(qū)別?
官方文檔:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相當(dāng)于@ResponseBody + @Controller合在一起的作用。
1)如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp頁面,配置的視圖解析器InternalResourceViewResolver不起作用,返回的內(nèi)容就是Return 里的內(nèi)容。
例如:本來應(yīng)該到success.jsp頁面的,則其顯示success.
2)如果需要返回到指定頁面,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行。
3)如果需要返回JSON,XML或自定義mediaType內(nèi)容到頁面,則需要在對應(yīng)的方法上加上@ResponseBody注解。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Eclipse 項目出現(xiàn)錯誤(紅色嘆號)解決方法
這篇文章主要介紹了Eclipse 項目出現(xiàn)錯誤(紅色嘆號)解決方法的相關(guān)資料,需要的朋友可以參考下2017-06-06淺談java字符串比較到底應(yīng)該用==還是equals
這篇文章主要介紹了淺談java字符串比較到底應(yīng)該用==還是equals,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Java實戰(zhàn)寵物店在線交易平臺的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+maven+Mysql+FreeMarker實現(xiàn)一個寵物在線交易系統(tǒng),大家可以在過程中查缺補漏,提升水平2022-01-01記一次Maven項目改造成SpringBoot項目的過程實踐
本文主要介紹了Maven項目改造成SpringBoot項目的過程實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03