今天在使用SpringBoot時遇到靜態資源無法訪問的問題,百思不得其解,最終解決,記錄下來。
html頁面中訪問static文件夾下的index.css文件失敗,瀏覽器調試模式下發現404。
項目目錄結構如下:
HTML代碼截圖
路徑正常,可以通過ctrl+鼠標左鍵直接訪問。
但是當運行應用后,瀏覽器訪問時卻發現無法獲取文件,,F12打開開發者調試工具查看結果如下:
百思不得其解。於是各種百度,最終在一篇講解SpringBoot靜態資源訪問的博客中收到了啟發,解決了問題。
那篇博客中寫道:
在SpringBoot中,默認配置的/**映射到/static。
靜態資源映射還有一個配置選項,為了簡單這里用.properties方式書寫:
這個配置會影響默認的/**,例如修改為/static/**后,只能映射如/static/js/sample.js這樣的請求(修改前是/js/sample.js)。這個配置只能寫一個值,不像大多數可以配置多個用逗號隔開的。
這句“(修改前是/js/sample.js)”給了我啟發,於是我也將我的路徑去掉前面的“/static”,測試,成功!
修改后HTML頁面代碼截圖:
注意!這時IDEA高亮顯示,表示IDEA找不到該路徑!
運行結果截圖:
此時獲取index.css文件成功!並且路徑是”/css/index.css”!
即,解決方案是:去掉路徑前的“/static”!
這次出錯的原因主要在於自己對SpringBoot的靜態資源映射不夠了解。不過,之所以記錄下這個問題,並分享給大家,有兩點原因:
- 是因為在這個錯誤中IntelliJ IDEA起了助紂為虐的作用,錯誤的路徑它顯示為正確,而正確的路徑它卻高亮顯示找不到,這個坑可能會誤導很多人。
- 是因為SpringMVC中正確的路徑是要加上“/static”的,之前用SpringMVC寫項目時一直這么用的,存在定勢思維。