1. 程式人生 > >springboot配置靜態資源訪問路徑

springboot配置靜態資源訪問路徑

framework 訪問 pre pub 文件訪問 jar包 服務 ride 發布

其實在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 extends
WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
     // 這裏之所以多了一"/",是為了解決打war時訪問不到問題 registry.addResourceHandler(
"/**").addResourceLocations("/","classpath:/"); } }

不過真的是不建議我們修改靜態資源文件的訪問目錄為classpath:/,因為如果我們改了靜態資源的訪問目錄為classpath:/,這會帶來一個隱患,就是classpath下的所有文件都是可以被訪問到的。其實我們直接使用springboot的默認設置的靜態資源目錄(classpath:/statc/)j就可以了,不管是打war包還是jar包都是可以被訪問的,同時也會殺死別的目錄下的文件被訪問的機會。

但是有時候我們真的是需要訪問別的路徑,比如我之前做的一個項目,進行圖片的上傳,因為項目不是很大,所以沒有用到文件服務器,直接就是本地保存的,如果直接保存在項目目錄下這回帶來一個很大的問題,項目代碼重新發布的時候要把之前上傳的圖片拷貝出來,發布好後再放回去,這樣很麻煩,所以需要放到項目外面,這個時候不想改變靜態資源訪問目錄都不想了,但是還是建議將靜態資源放進static文件夾下,別的訪問目錄我們可以直接在後面追加,這樣就很完美了。

springboot配置靜態資源訪問路徑