SpringBoot訪問(wèn)不到controller的解決方案
SpringBoot訪問(wèn)不到controller
最近開始學(xué)習(xí)spring boot,做練習(xí)時(shí)候訪問(wèn)不到controller,報(bào)了404錯(cuò)誤。開始以為是沒有掃描到的問(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)類的位置是否正確。
Application啟動(dòng)類的位置不對(duì)。要將Application類放在最外側(cè)。即包含所有子包
原因:spring-boot會(huì)自動(dòng)加載啟動(dòng)類所在包下以及其子包下的所有組件。
例如:下圖會(huì)掃描Application啟動(dòng)類包下(即mycode包)、以及其子包(這里的controller包)。

2. 確認(rèn)輸入項(xiàng)目路徑是否正確
如:http://localhost:8080/index,這里需要注意的是端口號(hào)的查看。

3.確認(rèn)注解是否用對(duì)
在 Controller 層類上面使用的注解是 @RestController 而并非是 @Controller,或者是 @Controller + @ResponseBody;
詳解:
- 如果返回 String 或者 json 的話就直接類上用 @RestController;
- 如果想要頁(yè)面跳轉(zhuǎn)的話,就使用 @Controller;
- 如果只有在某方法上返回 json,其他方法跳轉(zhuǎn)頁(yè)面,則在類上添加 @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路徑書寫問(wèn)題
@RequestMapping(“xxxxxxxxxxxxxx”)?
實(shí)際訪問(wèn)的路徑與”xxx”不符合,注意對(duì)應(yīng)一下自己訪問(wèn)的url與@RequestMapping中填寫的是否一致,千萬(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 |
建議大家可以專門參考一下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)類會(huì)出現(xiàn)在springboot_demo1包下面,這種情況下,調(diào)用controller層會(huì)訪問(wèn)不到。

解決辦法
將SpringbootDemo1Application類移出當(dāng)前包,之后就可以正常使用controller層

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java集合List和Map互轉(zhuǎn)的方法總結(jié)
有時(shí)候我們需要將給定的List轉(zhuǎn)換為Map,或者M(jìn)ap轉(zhuǎn)換為L(zhǎng)ist,本文主要介紹了Java集合List和Map互轉(zhuǎn)的方法總結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
詳解springMVC之與json數(shù)據(jù)交互方法
本篇文章主要介紹了詳解springMVC之與json數(shù)據(jù)交互方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
SpringBoot項(xiàng)目啟動(dòng)時(shí)提示程序包不存在和找不到符號(hào)的處理方法
最近接手同事開發(fā)的一個(gè)Springboot工作項(xiàng)目,從svn上整體拉取下來(lái)后,構(gòu)建完成后,啟動(dòng)的時(shí)候遇到了程序包找不到的情況,所以本文記錄了SpringBoot項(xiàng)目啟動(dòng)時(shí)提示程序包不存在和找不到符號(hào)的處理方法,需要的朋友可以參考下2024-05-05
基于Java實(shí)現(xiàn)回調(diào)監(jiān)聽工具類
這篇文章主要為大家詳細(xì)介紹了如何基于Java實(shí)現(xiàn)一個(gè)回調(diào)監(jiān)聽工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
SpringCloud-Alibaba-Sentinel服務(wù)降級(jí),熱點(diǎn)限流,服務(wù)熔斷
這篇文章主要介紹了SpringCloud-Alibaba-Sentinel服務(wù)降級(jí),熱點(diǎn)限流,服務(wù)熔斷,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Springboot 1.5.7整合Kafka-client代碼示例
這篇文章主要介紹了Springboot 1.5.7整合Kafka-client代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Java super關(guān)鍵字用法實(shí)戰(zhàn)案例分析
這篇文章主要介紹了Java super關(guān)鍵字用法,結(jié)合具體案例形式分析了java super關(guān)鍵字調(diào)用父類構(gòu)造方法、屬性及方法等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-09-09
springboot如何重定向攜帶數(shù)據(jù) RedirectAttributes
這篇文章主要介紹了springboot如何重定向攜帶數(shù)據(jù) RedirectAttributes,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

