關(guān)于@Controller和@Restcontroller的那點(diǎn)奇葩事
@Controller和@Restcontroller
直接甩正事
我要返回如下頁(yè)面路徑:


控制層的注解為上圖時(shí),結(jié)果正常:

但注解的@Controller若是變?yōu)榱薂Restcontroller了呢

結(jié)果如下:

后來(lái)的經(jīng)驗(yàn)總結(jié)
RestController相當(dāng)于Controller+ResponseBody注解
如果只是使用@RestController注解Controller,則Controller中的方法無(wú)法返回jsp頁(yè)面,或者h(yuǎn)tml,配置的視圖解析器 ,也就是相當(dāng)于在方法上面自動(dòng)加了ResponseBody注解,所以沒(méi)辦法跳轉(zhuǎn)并傳輸數(shù)據(jù)到另一個(gè)頁(yè)面,所以InternalResourceViewResolver也不起作用,返回的內(nèi)容就是Return 里的內(nèi)容,即數(shù)據(jù)直接甩在當(dāng)前請(qǐng)求的頁(yè)面上,適用于ajax異步請(qǐng)求。
如果需要返回到指定頁(yè)面,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行
@Controller和@RestController的區(qū)別?
官方文檔:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相當(dāng)于@ResponseBody + @Controller合在一起的作用。
1)如果只是使用@RestController注解Controller,則Controller中的方法無(wú)法返回jsp頁(yè)面,配置的視圖解析器InternalResourceViewResolver不起作用,返回的內(nèi)容就是Return 里的內(nèi)容。
例如:本來(lái)應(yīng)該到success.jsp頁(yè)面的,則其顯示success.
2)如果需要返回到指定頁(yè)面,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行。
3)如果需要返回JSON,XML或自定義mediaType內(nèi)容到頁(yè)面,則需要在對(duì)應(yīng)的方法上加上@ResponseBody注解。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringMVC整合kinfe4j及問(wèn)題解決分析
這篇文章主要為大家介紹了SpringMVC整合kinfe4j及問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
基于Java實(shí)現(xiàn)獲取本地IP地址和主機(jī)名
這篇文章主要介紹了基于Java實(shí)現(xiàn)獲取本地IP地址和主機(jī)名,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Struts2 Result 返回JSON對(duì)象詳解
這篇文章主要講解Struts2返回JSON對(duì)象的兩種方式,講的比較詳細(xì),希望能給大家做一個(gè)參考。2016-06-06
關(guān)于Mybatis使用collection分頁(yè)問(wèn)題
項(xiàng)目中mybatis分頁(yè)的場(chǎng)景是非常高頻的,當(dāng)使用ResultMap并配置collection做分頁(yè)的時(shí)候,我們可能會(huì)遇到獲取當(dāng)前頁(yè)的數(shù)據(jù)少于每頁(yè)大小的數(shù)據(jù)問(wèn)題。接下來(lái)通過(guò)本文給大家介紹Mybatis使用collection分頁(yè)問(wèn)題,感興趣的朋友一起看看吧2021-11-11

