springboot配置靜態資源訪問路徑
其實在springboot中靜態資源的映射文件是在resources目錄下的static文件夾,springboot推薦我們將靜態資源放在static文件夾下,因為默認配置就是classpath:/static/但是之前我們都習慣將靜態資源文件放在webapp下面,特別是打war包的項目,但是如果我們直接創建一個webapp文件目錄,將靜態資源放進去,在項目啟動的時候我們是訪問不到的,所以我們要進行一些項目配置。
改變springboot項目靜態資源文件訪問目錄的方式有兩種,一種是直接在配置文件中進行設置,另一種是我們編寫一個配置類,繼承org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter或者org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport
並重寫addResourceHandlers(ResourceHandlerRegistry registry)方法,其實addResourceHandlers(ResourceHandlerRegistry registry)方法就是個空方法。
第一種:在配置文件中進行配置
#靜態資源訪問路徑 spring.mvc.static-path-pattern=/** #靜態資源映射路徑 spring.resources.static-locations=classpath:/
第二種:通過編程進行設置
@Configuration public class MvcConfig extendsWebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 這裏之所以多了一"/",是為了解決打war時訪問不到問題 registry.addResourceHandler("/**").addResourceLocations("/","classpath:/"); } }
不過真的是不建議我們修改靜態資源文件的訪問目錄為classpath:/,因為如果我們改了靜態資源的訪問目錄為classpath:/,這會帶來一個隱患,就是classpath下的所有文件都是可以被訪問到的。其實我們直接使用springboot的默認設置的靜態資源目錄(classpath:/statc/)j就可以了,不管是打war包還是jar包都是可以被訪問的,同時也會殺死別的目錄下的文件被訪問的機會。
但是有時候我們真的是需要訪問別的路徑,比如我之前做的一個項目,進行圖片的上傳,因為項目不是很大,所以沒有用到文件服務器,直接就是本地保存的,如果直接保存在項目目錄下這回帶來一個很大的問題,項目代碼重新發布的時候要把之前上傳的圖片拷貝出來,發布好後再放回去,這樣很麻煩,所以需要放到項目外面,這個時候不想改變靜態資源訪問目錄都不想了,但是還是建議將靜態資源放進static文件夾下,別的訪問目錄我們可以直接在後面追加,這樣就很完美了。
springboot配置靜態資源訪問路徑