SpringMVC訪問controller報(bào)錯(cuò)404的解決辦法(總結(jié)超詳細(xì))
問題描述:
純注解配置SpringMVC程序,使用tomcat8.5.95版本啟動(dòng),能啟動(dòng)成功并且訪問index.jsp頁面,但是訪問/save時(shí)出現(xiàn)404無法訪問,程序如下

解決辦法:
一.更換高版本tomcat
以下的所有方法我全部都嘗試過,但還是訪問controller 404,最后更換了最新版本的tomcat才解決,所以在此把該方法列到第一個(gè)
二.檢查jdk與spring版本是否兼容
Spring 框架的不同版本對于 JDK 的要求是有所區(qū)別的。一般來說,每個(gè) Spring 框架版本都會(huì)聲明它所支持的 JDK 版本范圍。以下是一些常見的 Spring 框架版本對 JDK 的要求:
1. Spring Framework 5.x:
- Spring 5.x 支持 JDK 8 及以上版本。這意味著你可以在 JDK 8、9、10、11、12、13、14、15 和 16 上運(yùn)行 Spring Framework 5.x
2. Spring Framework 6.x:
- Spring Framework 6基于JDK 17構(gòu)建。換句話講,若想使用Spring Framework 6那么你的JDK環(huán)境最低要求JDK 17
因此,如果你在使用 Spring MVC 6.x 版本,需要確保你的 JDK 版本符合其要求。當(dāng)然,具體的兼容性要求最好還是查閱官方文檔或者發(fā)布說明,以確保 JDK 和 Spring 版本之間的兼容性。
三.刪項(xiàng)目重寫一個(gè)
這一步驟是一種常見的排查問題的方法,通常用于排除項(xiàng)目中可能存在的難以定位的問題。通過刪除并重新編寫項(xiàng)目,你可以確保項(xiàng)目的結(jié)構(gòu)和配置是干凈的,并且可以排除一些潛在的問題
操作起來很簡單,文件夾里找到項(xiàng)目直接刪除即可
四.WEB-INF中導(dǎo)入lib
在傳統(tǒng)的基于 Servlet 的 Web 應(yīng)用中,通常會(huì)將項(xiàng)目所需的第三方庫(JAR 文件)放置在 WEB-INF/lib 目錄下。這些 JAR 文件包含了項(xiàng)目所需的各種依賴庫
在現(xiàn)代的 Maven 或 Gradle 項(xiàng)目中,這些依賴通常會(huì)被管理工具自動(dòng)下載并放置在項(xiàng)目的類路徑中,而不需要手動(dòng)放置在 WEB-INF/lib 目錄下。但是IDEA有時(shí)會(huì)出錯(cuò),導(dǎo)致WEB-INF下沒有l(wèi)ib目錄,這時(shí)候就需要自己手動(dòng)添加了
在設(shè)置的項(xiàng)目結(jié)構(gòu)中,選擇工件


在WEB-INF目錄下手動(dòng)添加一個(gè)名稱為lib的文件

lib的位置別錯(cuò)了

選擇庫文件,里面的東西全部添加


保存,退出,重新運(yùn)行tomcat查看訪問controller是否報(bào)錯(cuò)404
五.如果返回的數(shù)據(jù)為json,確保引入jackson依賴
在一個(gè)典型的 Spring MVC 應(yīng)用中,當(dāng)你向客戶端返回一個(gè)對象時(shí),Spring MVC 默認(rèn)使用 HTTP 消息轉(zhuǎn)換器(HTTP Message Converters)來將對象轉(zhuǎn)換為合適的響應(yīng)格式。這意味著,如果你的控制器方法返回一個(gè)對象,Spring MVC 將根據(jù)請求的 Accept 頭部信息,將該對象轉(zhuǎn)換為適當(dāng)?shù)捻憫?yīng)格式,比如 JSON 或 XML
在默認(rèn)情況下,Spring MVC 提供了一些內(nèi)置的消息轉(zhuǎn)換器,用于處理各種格式的數(shù)據(jù)。但是,如果你想要返回 JSON 格式的數(shù)據(jù),通常會(huì)引入 Jackson 庫(如 jackson-databind)來實(shí)現(xiàn) JSON 的序列化和反序列化。Jackson 庫提供了 MappingJackson2HttpMessageConverter,它可以將 Java 對象轉(zhuǎn)換為 JSON 格式的數(shù)據(jù),并且能夠與 Spring MVC 集成
因此,當(dāng)你在 Spring MVC 中想要返回 JSON 格式的數(shù)據(jù)時(shí),通常會(huì)引入 Jackson 庫,并確保 Spring MVC 配置正確地使用了 MappingJackson2HttpMessageConverter,以便將對象轉(zhuǎn)換為 JSON 格式的響應(yīng)
如果在一個(gè)純注解的 Spring MVC 應(yīng)用中,你想要返回 JSON 格式的數(shù)據(jù),通常需要引入 Jackson 庫,并且在控制器方法上使用 @RestController 或 @ResponseBody 注解來指示該方法返回 JSON 格式的數(shù)據(jù)。如果沒有正確引入 Jackson 庫或配置 Spring MVC 來處理 JSON 格式的數(shù)據(jù),可能會(huì)導(dǎo)致返回的數(shù)據(jù)格式不符合預(yù)期,或者在訪問控制器方法時(shí)出現(xiàn) 404 錯(cuò)誤
六.確保所有的注解都加上了
1.Bean相關(guān)
檢查@Controller注解,將該類注冊為Bean
檢查@RequestMapping是否加上,和后面的訪問路徑是否寫錯(cuò)
檢查@ResponseBody是否加上,無返回值可忽略

2.config相關(guān)
(1) SpringMvcConfig
是否掃到了bean所在的包

(2) AbstractDispatcherServletInitializer實(shí)現(xiàn)是否正確

七.刪除.m2文件下的repository
在 Java 開發(fā)中,".m2" 目錄通常是 Maven 的本地倉庫,用于存儲(chǔ)項(xiàng)目的依賴庫。當(dāng)你在項(xiàng)目中使用 Maven 進(jìn)行依賴管理時(shí),Maven 會(huì)從遠(yuǎn)程倉庫下載所需的依賴,并將其緩存到本地的 ".m2" 目錄下。這樣做可以加快構(gòu)建過程,并在沒有網(wǎng)絡(luò)連接時(shí)也能夠構(gòu)建項(xiàng)目
有時(shí)候本地的依賴庫可能會(huì)因?yàn)楦鞣N原因而損壞或不完整,導(dǎo)致構(gòu)建失敗或者出現(xiàn)奇怪的行為。通過刪除并重新下載,可以確保本地的依賴庫是完整的
八.webapp文件未被設(shè)為資源
仔細(xì)看看webapp文件夾上有沒有這個(gè)小點(diǎn),沒有的話需要重新設(shè)置

還是在設(shè)置里的項(xiàng)目結(jié)構(gòu)中,選擇Fact
選擇+新建web,選擇你所創(chuàng)建的webapp的路徑,確認(rèn)返回,即可設(shè)置成功
以上就是SpringMVC訪問controller報(bào)錯(cuò)404的解決辦法(總結(jié)超詳細(xì))的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC訪問controller404的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java實(shí)現(xiàn)順序結(jié)構(gòu)線性列表的函數(shù)代碼
java實(shí)現(xiàn)順序結(jié)構(gòu)線性列表的函數(shù)代碼。需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10
SpringBoot整合Druid數(shù)據(jù)源過程詳解
這篇文章主要介紹了SpringBoot整合Druid數(shù)據(jù)源過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Java必會(huì)的Synchronized底層原理剖析
synchronized作為Java程序員最常用同步工具,很多人卻對它的用法和實(shí)現(xiàn)原理一知半解,以至于還有不少人認(rèn)為synchronized是重量級(jí)鎖,性能較差,盡量少用。但不可否認(rèn)的是synchronized依然是并發(fā)首選工具,本文就來詳細(xì)講講2022-10-10
阿里通用OCR文字識(shí)別/圖像識(shí)別/圖片識(shí)別對接代碼示例(Java篇)
這篇文章主要介紹了阿里通用OCR文字識(shí)別/圖像識(shí)別/圖片識(shí)別對接(Java篇)的相關(guān)資料,文中詳細(xì)介紹了包括開通服務(wù)、測試圖片、編寫識(shí)別代碼、處理識(shí)別結(jié)果等步驟,需要的朋友可以參考下2024-12-12
MySQL如何設(shè)置自動(dòng)增長序列SEQUENCE的方法
本文主要介紹了MySQL如何設(shè)置自動(dòng)增長序列SEQUENCE的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
java.sql.SQLRecoverableException關(guān)閉的連接異常問題及解決辦法
當(dāng)數(shù)據(jù)庫連接池中的連接被創(chuàng)建而長時(shí)間不使用的情況下,該連接會(huì)自動(dòng)回收并失效,就導(dǎo)致客戶端程序報(bào)“ java.sql.SQLException: Io 異常: Connection reset” 或“java.sql.SQLException 關(guān)閉的連接”異常問題,下面給大家分享解決方案,一起看看吧2024-03-03
在Springboot中Mybatis與Mybatis-plus的區(qū)別詳解
MyBatis是一個(gè)優(yōu)秀的持久層框架,它對JDBC的操作數(shù)據(jù)庫的過程進(jìn)行封裝,MyBatisPlus (簡稱 MP)是一個(gè) MyBatis的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,本文將給大家介紹了在Springboot中Mybatis與Mybatis-plus的區(qū)別2023-12-12

