美文网首页
springboot静态资源文件映射

springboot静态资源文件映射

作者: 墨色尘埃 | 来源:发表于2018-02-06 22:07 被阅读1471次

    1、使用系统默认资源映射 /META-INF/resources、/resources、/static、/public
    pom.xml中设置将.yml/.xml/.xls/.jpeg结尾的文件打入jar包中,重新编译发现左上角的文件已经被打到了包中,见左下角圈出部分。如果没有定义写入jar包规则,比如没有<include>*/.jpeg</include>,那么左下角就没有ggg.jpeg这张图片,用postman访问也就访问不到了。

    image.png
    使用postman访问:http://127.0.0.1:10002/ggg.jpeg
    image.png
    2、自定义资源映射
    image.png

    自定义目录映射
    ① 通过访问可获取 http://127.0.0.1:10002/rules/company.xml

    @Configuration
    public class MyConfiguration extends WebMvcConfigurerAdapter {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            /**
             * @Description: 对文件的路径进行配置, 创建一个虚拟路径/rules/** ,即只要在<img src="/rules/picName.jpg" />便可以直接引用图片
             * classpath:/rules/这是图片的物理路径,rules是文件夹  "file:/+本地图片的地址"
             */
            registry.addResourceHandler("/rules/**").addResourceLocations
                    ("classpath:/rules/");
            super.addResourceHandlers(registry);
        }
    }
    

    ② 通过访问可获取 http://127.0.0.1:10002/company.xml

    @Configuration
    public class MyConfiguration extends WebMvcConfigurerAdapter {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            /**
             * @Description: 对文件的路径进行配置, 创建一个虚拟路径/rules/** ,即只要在<img src="/rules/picName.jpg" />便可以直接引用图片
             *这是图片的物理路径  "file:/+本地图片的地址"
             */
            registry.addResourceHandler("/**").addResourceLocations
                    ("classpath:/rules/");
            super.addResourceHandlers(registry);
        }
    }
    

    使用外部目录
    ① 通过访问可获取 http://127.0.0.1:10002/rules/company.xml

    @Configuration
    public class MyConfiguration extends WebMvcConfigurerAdapter {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            /**
             * @Description: 对文件的路径进行配置, 创建一个虚拟路径/rules/** ,即只要在<img src="/rules/picName.jpg" />便可以直接引用图片
             *这是图片的物理路径  "file:/+本地图片的地址"
             */
            registry.addResourceHandler("/rules/**").addResourceLocations
                    ("file:/E:/IdeaProjects/gaygserver/src/main/resources/rules/");
            super.addResourceHandlers(registry);
        }
    }
    

    ② 通过访问可获取 http://127.0.0.1:10002/company.xml

    @Configuration
    public class MyConfiguration extends WebMvcConfigurerAdapter {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            /**
             * @Description: 对文件的路径进行配置, 创建一个虚拟路径/rules/** ,即只要在<img src="/rules/picName.jpg" />便可以直接引用图片
             *这是图片的物理路径  "file:/+本地图片的地址"
             */
            registry.addResourceHandler("/**").addResourceLocations
                    ("file:/E:/IdeaProjects/gaygserver/src/main/resources/rules/");
            super.addResourceHandlers(registry);
        }
    }
    

    总结:

    自定义映射虚拟路径A:/rules/**
    自定义映射虚拟虚拟路径B:/**
    系统默认资源映射路径C:/**
    AC不冲突:
    http://127.0.0.1:10002/rules/company.xml 可显示
    http://127.0.0.1:10002/ggg.jpeg 可显示
    BC冲突:
    http://127.0.0.1:10002/company.xml 可显示
    http://127.0.0.1:10002/ggg.jpeg 不可显示


    文件被打入jar包情况下是指:

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
            </plugins>
            <resources>
                <resource>
                    <directory>${basedir}/lib</directory>
                    <targetPath>BOOT-INF/lib/</targetPath>
                    <includes>
                        <include>**/*.jar</include>
                    </includes>
                </resource>
    
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.yml</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>false</filtering>
                </resource>
            </resources>
        </build>
    

    自定义映射虚拟路径
    ①addResourceHandler:/templates/**
    ②addResourceLocations:file:\E:\IdeaProjects\gaygserver\src\main\resources\static\
    ③addResourceLocations:classpath:/static/ (文件被打入jar包情况下)
    ①+②:http://127.0.0.1:10003/templates/ggg.jpeg 可显示
    ①+③:http://127.0.0.1:10003/templates/ggg.jpeg 可显示
    有自定义虚拟路径时,默认虚拟路径也可以用 (文件被打入jar包情况下)
    http://127.0.0.1:10003/ggg.jpeg 可显示

    自定义映射虚拟路径
    ①addResourceHandler:/** 覆盖默认
    ②addResourceLocations:file:\E:\IdeaProjects\gaygserver\src\main\resources\static\
    ③addResourceLocations:classpath:/static/ (文件被打入jar包情况下)
    ①+②:http://127.0.0.1:10003/templates/ggg.jpeg 可显示
    ①+③:http://127.0.0.1:10003/templates/ggg.jpeg 可显示
    因为默认虚拟路径/被自定义虚拟路径/覆盖,所以
    http://127.0.0.1:10003/ggg.jpeg 不可显示

    注:两反斜杠\等同于一个斜杠/
    末尾的两个反斜杠必须要有

    相关文章

      网友评论

          本文标题:springboot静态资源文件映射

          本文链接:https://www.haomeiwen.com/subject/hjgizxtx.html