springboot整合jsp,頁面全報404


1.情景展示

springboot項目整合jsp后,只要是訪問跳轉頁面的請求,全部都報404。

2.具體分析

2022年2月25日11:43:38

最簡單的測試方式:
將項目打成war包,放到tomcat的webapps目錄下,啟動tomcat,通過瀏覽器訪問相關頁面或請求;

如果能夠正常訪問,說明不是項目的問題而是idea的問題;

如果不能正常訪問,說明是項目的問題。


以下是老的排查流程,如果你覺得將項目放到tomcat下太麻煩,也可以按照下面流程進行排查或者直接按照解決方案來。

我的項目目錄結構如下:

頁面直接放在了webapp目錄下,由於我並沒有把它放在WEB-INF目錄下,所以,在沒有添加攔截器的情況下,是可以直接訪問到jsp頁面的。

如果你的頁面在WEB-INF下,是無法直接訪問頁面的,所以,為了測試,你可以先找一個簡單的頁面直接放到webapp目錄下。

這樣,在正常情況下,我們可以不通過控制層就能訪問到頁面。

404.jsp的訪問路徑為:jsp/404.jsp

如果到這一步,你能正常訪問得到的話,就說明你之前頁面的項目路徑存在問題;

其實,不僅僅是jsp無法訪問,html文件也無法訪問得到:

只要是存放在webapp目錄下的所有文件,都無法訪問得到。

這說明:不是項目的問題,而是idea開發工具的問題!

3.解決方案

出現這個問題,往往是多模塊項目。

通過idea創建多個module的項目,配置啟動的application需要將module指向其所在的工作目錄。(如果指定的是父目錄,默認加載第一個module的配置)

點擊springboot的啟動類,選擇“Edit Configurations...”;

展開“Environment”,找到“Working directory”,點擊右側的文件夾目錄;

由於我的springboot啟動類在bill-web下,所以將其工作目錄設置成它;

insert-->Apply-->OK。

重啟項目就能正常訪問啦。

4.效果展示

現在,控制層請求可以正常轉發到頁面上啦。

單獨訪問jsp頁面。

再來看看這個

看路徑有什么區別?

webapp這個目錄,可有可無,不管你加不加,都能正常訪問得到,這是為啥?

我們知道:純正的javaWebMaven項目,在最終打包的時候,會把webapp目錄給去掉,這也就是:為什么我們訪問的時候不需要加/webapp/這一層的原因(與本文無關)。

真正的原因是:idea自動將web資源的目錄完成了映射。

那為啥webapp目錄也能訪問?

因為springboot內置tomcat啟動的,可能對於內置tomcat而言,它就是一個普通的文件夾目錄吧(猜的)。

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM