參考:作者:恆宇少年
鏈接:https://www.jianshu.com/p/c6ab1081fd5f
鏈接:https://www.jianshu.com/p/c6ab1081fd5f
介紹:
SpringMVC
大家都不陌生,而被SpringBoot集成的SpringMVC除了配置與獨立的優點差別,其他使用都是一樣的,一般的項目都會配置登錄攔截器,那如果我們的image、css、js是不是也會被攔截器攔截呢?答案是肯定的,當然也不是必然的。我們在配置攔截器的攔截路徑時可以過濾掉靜態文件的路徑規則。
SpringBoot默認給我們配置了靜態資源的地址轉發,我們只需要將靜態文件放到/resources/static目錄下,就可以直接訪問了。但是這樣往往會暴露給用戶我們的項目結構,針對這一點我們需要修改靜態資源的路徑。
SpringBoot默認給我們配置了靜態資源的地址轉發,我們只需要將靜態文件放到/resources/static目錄下,就可以直接訪問了。但是這樣往往會暴露給用戶我們的項目結構,針對這一點我們需要修改靜態資源的路徑。
本章目標
配置SpringBoot修改內置SpringMVC靜態資源路徑,提高項目目錄結構的安全性。
一、創建項目(創建springboot的war工程即可)目錄如下:

二、啟動沒有定義靜態路徑之前的項目。
啟動項目,啟動成功后打開瀏覽器訪問localhost:8080/aa.png,我們可以看到靜態圖片,但是這樣我們的項目目錄就完全暴露了。
三、配置自定義靜態資源路徑,創建FileConfiguration類
從Spring3.0,@Configuration用於定義配置類,可替換xml配置文件,被注解的類內部包含有一個或多個被@Bean注解的方法,這些方法將會被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進行掃描,並用於構建bean定義,初始化Spring容器。
注意:@Configuration注解的配置類有如下要求:
- @Configuration不可以是final類型;
- @Configuration不可以是匿名類;
- 嵌套的configuration必須是靜態類。
//特別注意這個注解,不然加載不到它 @Configuration public class FileConfiguration extends WebMvcConfigurerAdapter{ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 配置路徑,對應靜態資源所在的目錄 registry.addResourceHandler("/dyh/file/resources/**").addResourceLocations("classPath:/static/"); } }
我們配置了靜態資源的路徑為/dyh/file/resources/**,那么只要訪問地址前綴是/dyh/file/resources/,就會被自動轉到項目根目錄下的static文件夾內。
我們通過新的地址確實可以訪問到靜態資源文件了。一般我們的項目不會講資源文件直接放到static目錄下,而是創建幾個二級路徑。
我創建了一個imgs文件夾,將t.png圖片移動到imgs目錄下,那么我們在訪問路徑下只需要添加一個二級路徑即可,我們再來重啟下項目,訪問地址:127.0.0.1:8080/dyh/file/resources/imgs/aa.png,我們通過這個路徑是可以成功訪問到圖片的,所以不管你的資源文件怎么分類,只需要添加對應的二級路徑就可以了。
本文主要講述了SpringBoot項目集成的SpringMVC是如何自定義靜態資源路徑的。SpringBoot為我們提供了很多便利,在傳統的項目中我們必須要去配置靜態資源路徑才可以訪問,而SpringBoot項目則不需要,它內部已經做了默認處理。
