spring?boot如何配置靜態(tài)路徑詳解(404出現(xiàn)的坑)
一 前言
最近有個(gè)項(xiàng)目,需要上傳一個(gè)zip文件(zip文件就是一堆的html壓縮組成)的壓縮文件,然后后端解壓出來,用戶可以預(yù)覽上傳好的文件。
查看資料,spring boot對靜態(tài)文件,可以通過配置路徑的方式來實(shí)現(xiàn)。
@Slf4j @Configuration public class WebMvcConfig extends WebMvcConfigurationSupport { @Resource private PermissionInterceptor permissionInterceptor; @Resource private CheckOpenInterceptor checkOpenInterceptor; @Value("${dataDir}") private String rootPath; @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { log.info(">>addResourceHandlers>>"+"file:"+rootPath); registry.addResourceHandler("/file/**").addResourceLocations("file:"+rootPath); super.addResourceHandlers(registry); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(permissionInterceptor).addPathPatterns("/file/**"); super.addInterceptors(registry); } }
rootPath 我本地調(diào)試環(huán)境的是 : d:/file/
測試環(huán)境的是 /data/file
/**” :表示訪問路徑,根據(jù)實(shí)際情況指定(這里表示/file/下的所有路徑)
"file:/d/file/" :表示靜態(tài)資源在硬盤上的真實(shí)存儲位置,根據(jù)實(shí)際情況指定
本地開發(fā)是很順利的,很快就寫好了,當(dāng)部署到測試機(jī)的時(shí)候,上傳的文件,無法預(yù)覽,一直提示404。
二 漫長的調(diào)試之路
初步懷疑是2個(gè)問題
1.權(quán)限問題檢查了文件也正常寫入和讀出,排除權(quán)限的問題
2文件編碼的問題
我上傳的有中文目錄,也許是中文無法映射出來,后來,上傳了全英文的文件,也是無法預(yù)覽,實(shí)在是吐血了,
都無法解決我的問題
實(shí)在是想不到什么問題,考慮了能否遠(yuǎn)程debug下呢
我配置了 ide debug,遠(yuǎn)程 java啟動命令
java -agentlib:jdwp=transport=dt_socket,address=5555,server=y,suspend=y -jar myproject.jar
ide 配置
其中 host 是我本地的ip地址
啟動好遠(yuǎn)程服務(wù),打好斷點(diǎn),然后debug
經(jīng)過幾個(gè)小時(shí)的spring debug 源碼,終于發(fā)現(xiàn)了我的路徑少了個(gè) / 號, spring boot 對于 不是/結(jié)尾的處理,直接忽略了,找到了上級目錄去了,這就造成一直404的原因
總結(jié)
1.開發(fā)容易,調(diào)試難,一定要注意配置要小心點(diǎn)
2.spring boot 要多熟悉下,有問題,也可以debug來解決
到此這篇關(guān)于spring boot如何配置靜態(tài)路徑的文章就介紹到這了,更多相關(guān)spring boot配置靜態(tài)路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java?中的HashMap的底層實(shí)現(xiàn)和元素添加流程
這篇文章主要介紹了java?中的HashMap的底層實(shí)現(xiàn)和元素添加流程,HashMap?是使用頻率最高的數(shù)據(jù)類型之一,同時(shí)也是面試必問的問題之一,尤其是它的底層實(shí)現(xiàn)原理,下文更多詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-05-05Java實(shí)戰(zhàn)之基于swing的QQ郵件收發(fā)功能實(shí)現(xiàn)
這篇文章主要介紹了Java實(shí)戰(zhàn)之基于swing的QQ郵件收發(fā)功能實(shí)現(xiàn),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04找不到正確的java_home路徑報(bào)錯(cuò)解決
本文主要介紹了找不到正確的java_home路徑報(bào)錯(cuò)解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Dubbo?retries?超時(shí)重試機(jī)制的問題原因分析及解決方案
這篇文章主要介紹了Dubbo?retries?超時(shí)重試機(jī)制的問題,解決方案是通過修改dubbo服務(wù)提供方,將timeout超時(shí)設(shè)為20000ms或者設(shè)置retries=“0”,禁用超時(shí)重試機(jī)制,感興趣的朋友跟隨小編一起看看吧2022-04-04