美文网首页
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