SpringBoot訪問(wèn)不到controller的解決方案
SpringBoot訪問(wèn)不到controller
最近開(kāi)始學(xué)習(xí)spring boot,做練習(xí)時(shí)候訪問(wèn)不到controller,報(bào)了404錯(cuò)誤。開(kāi)始以為是沒(méi)有掃描到的問(wèn)題,后來(lái)發(fā)現(xiàn)還有其他原因。下面我們總結(jié)一下訪問(wèn)不到controller的錯(cuò)誤原因。
首先,出現(xiàn)這個(gè)異常說(shuō)明了跳轉(zhuǎn)頁(yè)面的url無(wú)對(duì)應(yīng)的值.
異常:
This application has no explicit mapping for /error, so you are seeing this as afallback.
解決方案
1. 確認(rèn)是否掃描到了controller,Application啟動(dòng)類(lèi)的位置是否正確。
Application啟動(dòng)類(lèi)的位置不對(duì)。要將Application類(lèi)放在最外側(cè)。即包含所有子包
原因:spring-boot會(huì)自動(dòng)加載啟動(dòng)類(lèi)所在包下以及其子包下的所有組件。
例如:下圖會(huì)掃描Application啟動(dòng)類(lèi)包下(即mycode包)、以及其子包(這里的controller包)。
2. 確認(rèn)輸入項(xiàng)目路徑是否正確
如:http://localhost:8080/index,這里需要注意的是端口號(hào)的查看。
3.確認(rèn)注解是否用對(duì)
在 Controller 層類(lèi)上面使用的注解是 @RestController 而并非是 @Controller,或者是 @Controller + @ResponseBody;
詳解:
- 如果返回 String 或者 json 的話(huà)就直接類(lèi)上用 @RestController;
- 如果想要頁(yè)面跳轉(zhuǎn)的話(huà),就使用 @Controller;
- 如果只有在某方法上返回 json,其他方法跳轉(zhuǎn)頁(yè)面,則在類(lèi)上添加 @Controller,在需要返回 String 和 json 的方法上添加 @ResponseBody 注解;
4.確認(rèn)導(dǎo)入項(xiàng)目注解的包地址是否正確
@RequestMapping("/hello") import org.springframework.web.bind.annotation.RequestMapping; @RestController import org.springframework.web.bind.annotation.RestController;
5.控制器的URL路徑書(shū)寫(xiě)問(wèn)題
@RequestMapping(“xxxxxxxxxxxxxx”)?
實(shí)際訪問(wèn)的路徑與”xxx”不符合,注意對(duì)應(yīng)一下自己訪問(wèn)的url與@RequestMapping中填寫(xiě)的是否一致,千萬(wàn)別忽略了多了一個(gè)空格的問(wèn)題。
6.配置了上下文路徑,使用了server.context-path
這里著重說(shuō)一下這個(gè)問(wèn)題,這也是博主犯得錯(cuò)誤。
我使用的SpringBoot版本為2.1.1,而server.context-path在2.0版本中已經(jīng)棄用了,采用 server.servlet.context-path。
由于版本的差異導(dǎo)致了配置的上下文路徑無(wú)效。
SpringBoot版本 | 配置 |
1.x | server.context-path |
2.x | server.servlet.context-path |
建議大家可以專(zhuān)門(mén)參考一下spring boot 1.x版本和2.x版本的差別,這樣后續(xù)學(xué)習(xí)或者工作過(guò)程中有相關(guān)問(wèn)題可以減少很多麻煩。
springboot項(xiàng)目controller訪問(wèn)不到的一種情況
在新創(chuàng)建一個(gè)springboot項(xiàng)目時(shí),注意Package下的目錄不要太長(zhǎng)
如果像上圖那樣創(chuàng)建項(xiàng)目,最終出來(lái)的項(xiàng)目結(jié)構(gòu)中,你的springboot啟動(dòng)類(lèi)會(huì)出現(xiàn)在springboot_demo1包下面,這種情況下,調(diào)用controller層會(huì)訪問(wèn)不到。
解決辦法
將SpringbootDemo1Application類(lèi)移出當(dāng)前包,之后就可以正常使用controller層
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java暴力匹配及KMP算法解決字符串匹配問(wèn)題示例詳解
這篇文章主要為大家介紹了java算法中暴力匹配算法及KMP算法解決字符串匹配的問(wèn)題示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析
這篇文章主要為大家介紹了生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10java 數(shù)據(jù)結(jié)構(gòu) 冒泡排序?qū)崿F(xiàn)代碼
這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu) 冒泡排序的相關(guān)資料,并附實(shí)例代碼,有需要的小伙伴可以參考下2016-09-09Java object wait notify notifyAll代碼解析
這篇文章主要介紹了Java object wait notify notifyAll代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Spring?Boot中的微信支付全過(guò)程(小程序)
微信支付是企業(yè)級(jí)項(xiàng)目中經(jīng)常使用到的功能,作為后端開(kāi)發(fā)人員,完整地掌握該技術(shù)是十分有必要的。今天通過(guò)本文給大家介紹Spring?Boot中的微信支付全過(guò)程,感興趣的朋友一起看看吧2022-05-05