springboot內置tomcat配置虛擬路徑

 

  在Springboot中默認的靜態資源路徑有:classpath:/METAINF/resources/classpath:/resources/classpath:/static/classpath:/public/,從這裏能夠看出這裏的靜態資源路徑都是在classpath中(也就是在項目路徑下指定的這幾個文件夾)web

 

  試想這樣一種狀況:一個網站有文件上傳文件的功能,若是被上傳的文件放在上述的那些文件夾中會有怎樣的後果?spring

  • 網站數據與程序代碼不能有效分離;瀏覽器

  • 當項目被打包成一個.jar文件部署時,再將上傳的文件放到這個.jar文件中是有多麼低的效率;springboot

  • 網站數據的備份將會很痛苦。mvc

 

  此時可能最佳的解決辦法是將靜態資源路徑設置到磁盤的基本個目錄。Springboot中能夠直接在配置文件中覆蓋默認的靜態資源路徑的配置信息:application.properties配置文件以下:app

spring.mvc.static-path-pattern=/**

spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:這裏寫本身的上傳文件路徑(注意要以/結尾)

 

  spring.mvc.static-path-pattern=/**表示全部的訪問都通過靜態資源路徑;網站

  spring.resources.static-locations在這裏配置靜態資源路徑,前面說了這裏的配置是覆蓋默認配置,因此須要將默認的也加上不然staticpublic等這些路徑將不能被看成靜態資源路徑,在這個最末尾的file:${web.upload-path}之全部要加file:是由於指定的是一個具體的硬盤路徑,其餘的使用classpath指的是系統環境變量。spa

  因爲前面已經在靜態資源路徑中上傳了一個名爲1.jpg的圖片,也使用server.port=1122設置了端口號爲1122,因此能夠經過瀏覽器打開:http://localhost:1122/1.jpg訪問到剛剛上傳的圖片。可是要注意,若是你在springboot的配置文件中加了屬性server.context-path,即項目名,那麼訪問的時候必定要加上這個配置的屬性值,否則404..net

 

 

參考博客:https://blog.csdn.net/qq_36750461/article/details/85050946code

相關文章
相關標籤/搜索