1、使用系统默认资源映射 /META-INF/resources、/resources、/static、/public
pom.xml中设置将.yml/.xml/.xls/.jpeg结尾的文件打入jar包中,重新编译发现左上角的文件已经被打到了包中,见左下角圈出部分。如果没有定义写入jar包规则,比如没有<include>*/.jpeg</include>,那么左下角就没有ggg.jpeg这张图片,用postman访问也就访问不到了。
使用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 不可显示
注:两反斜杠\等同于一个斜杠/
末尾的两个反斜杠必须要有
网友评论