springboot(八)內置SpringMvc靜態文件地址修改
阿新 • • 發佈:2019-01-18
www. 但是 靜態資源 resource springmvc registry 登錄 文件的 css 參考:作者:恒宇少年
鏈接:https://www.jianshu.com/p/c6ab1081fd5f
SpringBoot默認給我們配置了靜態資源的地址轉發,我們只需要將靜態文件放到/resources/static目錄下,就可以直接訪問了。但是這樣往往會暴露給用戶我們的項目結構,針對這一點我們需要修改靜態資源的路徑。
鏈接:https://www.jianshu.com/p/c6ab1081fd5f
介紹:
SpringMVC大家都不陌生,而被SpringBoot集成的SpringMVC除了配置與獨立的優點差別,其他使用都是一樣的,一般的項目都會配置登錄攔截器,那如果我們的image、css、js是不是也會被攔截器攔截呢?答案是肯定的,當然也不是必然的。我們在配置攔截器的攔截路徑時可以過濾掉靜態文件的路徑規則。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文件夾內。
如:我們訪問:127.0.0.1:8080/dyh/file/resources/aa.png就會被解析成127.0.0.1:8080/aa.png。 我們通過新的地址確實可以訪問到靜態資源文件了。一般我們的項目不會講資源文件直接放到static目錄下,而是創建幾個二級路徑。 我創建了一個imgs文件夾,將t.png圖片移動到imgs目錄下,那麽我們在訪問路徑下只需要添加一個二級路徑即可,我們再來重啟下項目,訪問地址:127.0.0.1:8080/dyh/file/resources/imgs/aa.png,我們通過這個路徑是可以成功訪問到圖片的,所以不管你的資源文件怎麽分類,只需要添加對應的二級路徑就可以了。 本文主要講述了SpringBoot項目集成的SpringMVC是如何自定義靜態資源路徑的。SpringBoot為我們提供了很多便利,在傳統的項目中我們必須要去配置靜態資源路徑才可以訪問,而SpringBoot項目則不需要,它內部已經做了默認處理。springboot(八)內置SpringMvc靜態文件地址修改