1. 程式人生 > >springboot(八)內置SpringMvc靜態文件地址修改

springboot(八)內置SpringMvc靜態文件地址修改

www. 但是 靜態資源 resource springmvc registry 登錄 文件的 css

參考:作者:恒宇少年
鏈接: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註解的配置類有如下要求:

  1. @Configuration不可以是final類型;
  2. @Configuration不可以是匿名類;
  3. 嵌套的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靜態文件地址修改