其實在springboot中靜態資源的映射文件是在resources目錄下的static文件夾,springboot推薦咱們將靜態資源放在static文件夾下,由於默認配置就是classpath:/static/可是以前咱們都習慣將靜態資源文件放在webapp下面,特別是打war包的項目,可是若是咱們直接建立一個webapp文件目錄,將靜態資源放進去,在項目啓動的時候咱們是訪問不到的,因此咱們要進行一些項目配置。web
改變springboot項目靜態資源文件訪問目錄的方式有兩種,一種是直接在配置文件中進行設置,另外一種是咱們編寫一個配置類,繼承org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter或者org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupportspring
並重寫addResourceHandlers(ResourceHandlerRegistry registry)方法,其實addResourceHandlers(ResourceHandlerRegistry registry)方法就是個空方法。編程
第一種:在配置文件中進行配置springboot
#靜態資源訪問路徑 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包都是能夠被訪問的,同時也會殺死別的目錄下的文件被訪問的機會。mvc
可是有時候咱們真的是須要訪問別的路徑,好比我以前作的一個項目,進行圖片的上傳,由於項目不是很大,因此沒有用到文件服務器,直接就是本地保存的,若是直接保存在項目目錄下這回帶來一個很大的問題,項目代碼從新發布的時候要把以前上傳的圖片拷貝出來,發佈好後再放回去,這樣很麻煩,因此須要放到項目外面,這個時候不想改變靜態資源訪問目錄都不想了,可是仍是建議將靜態資源放進static文件夾下,別的訪問目錄咱們能夠直接在後面追加,這樣就很完美了。app