Springboot內(nèi)置tomcat配置虛擬路徑過(guò)程解析
在Springboot中默認(rèn)的靜態(tài)資源路徑有:classpath:/METAINF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,從這里可以看出這里的靜態(tài)資源路徑都是在classpath中(也就是在項(xiàng)目路徑下指定的這幾個(gè)文件夾)
試想這樣一種情況:一個(gè)網(wǎng)站有文件上傳文件的功能,如果被上傳的文件放在上述的那些文件夾中會(huì)有怎樣的后果?
網(wǎng)站數(shù)據(jù)與程序代碼不能有效分離; 當(dāng)項(xiàng)目被打包成一個(gè).jar文件部署時(shí),再將上傳的文件放到這個(gè).jar文件中是有多么低的效率; 網(wǎng)站數(shù)據(jù)的備份將會(huì)很痛苦。此時(shí)可能最佳的解決辦法是將靜態(tài)資源路徑設(shè)置到磁盤(pán)的基本個(gè)目錄。在Springboot中可以直接在配置文件中覆蓋默認(rèn)的靜態(tài)資源路徑的配置信息:application.properties配置文件如下:
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:這里寫(xiě)自己的上傳文件路徑(注意要以/結(jié)尾)
spring.mvc.static-path-pattern=/**表示所有的訪問(wèn)都經(jīng)過(guò)靜態(tài)資源路徑;
spring.resources.static-locations在這里配置靜態(tài)資源路徑,前面說(shuō)了這里的配置是覆蓋默認(rèn)配置,所以需要將默認(rèn)的也加上否則static、public等這些路徑將不能被當(dāng)作靜態(tài)資源路徑,在這個(gè)最末尾的file:${web.upload-path}之所有要加file:是因?yàn)橹付ǖ氖且粋€(gè)具體的硬盤(pán)路徑,其他的使用classpath指的是系統(tǒng)環(huán)境變量。
由于前面已經(jīng)在靜態(tài)資源路徑中上傳了一個(gè)名為1.jpg的圖片,也使用server.port=1122設(shè)置了端口號(hào)為1122,所以可以通過(guò)瀏覽器打開(kāi):http://localhost:1122/1.jpg訪問(wèn)到剛剛上傳的圖片。但是要注意,如果你在springboot的配置文件中加了屬性server.context-path,即項(xiàng)目名,那么訪問(wèn)的時(shí)候一定要加上這個(gè)配置的屬性值,不然404.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 教你在 IntelliJ IDEA 中使用 VIM插件的詳細(xì)教程2. Intellij IDEA 2020.3 配置教程詳解3. Python查找不限層級(jí)Json數(shù)據(jù)中某個(gè)key或者value的路徑方式4. Java獲取文件的路徑及常見(jiàn)問(wèn)題解決方案5. java向上轉(zhuǎn)型發(fā)生的時(shí)機(jī)知識(shí)點(diǎn)詳解6. Vue看了就會(huì)的8個(gè)小技巧7. Vue的全局過(guò)濾器和私有過(guò)濾器的實(shí)現(xiàn)8. 分享我的第一次java Selenium自動(dòng)化測(cè)試框架開(kāi)發(fā)過(guò)程9. Python監(jiān)聽(tīng)剪切板實(shí)現(xiàn)方法代碼實(shí)例10. ASP.NET MVC增加一條記錄同時(shí)添加N條集合屬性所對(duì)應(yīng)的個(gè)體

網(wǎng)公網(wǎng)安備