SpringBoot静态资源映射揭秘

SpringBoot的Web开发

1.使用springboot进行web端的开发

(1)创建springboot应用,选择我们需要的模块

(2)在yml修改少量的配置就可以运行

(3)编写业务代码

XxxAutoConfiguration:帮我们给容器中自动配置组件;

XxxProperties:配置类来封装配置文件的内容;

2.Springboot对静态资源的映射规则

(1)ResourceProperties类

WebMvcAuotConfiguration:

java 复制代码
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
     if (!this.resourceProperties.isAddMappings()) {
           logger.debug("Default resource handling disabled");
           return;
      }

Integer cachePeriod = this.resourceProperties.getCachePeriod();
if (!registry.hasMappingForPattern("/webjars/**")) {
     customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META‐INF/resources/webjars/").setCachePeriod(cachePeriod));

}

String staticPathPattern = this.mvcProperties.getStaticPathPattern();
//静态资源文件夹映射
if (!registry.hasMappingForPattern(staticPathPattern)) {

    customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern).addResourceLocations(this.resourceProperties.getStaticLocations()).setCachePeriod(cachePeriod));

}
} /
/配置欢迎页映射
@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(
       ResourceProperties resourceProperties) {
       return new WelcomePageHandlerMapping(resourceProperties.getWelcomePage(),

this.mvcProperties.getStaticPathPattern());
}
//配置喜欢的图标
@Configuration
@ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)
public static class FaviconConfiguration {
       private final ResourceProperties resourceProperties;
       public FaviconConfiguration(ResourceProperties resourceProperties) {
            this.resourceProperties = resourceProperties;
}

 @Bean
public SimpleUrlHandlerMapping faviconHandlerMapping() {
       SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
       mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
       //所有 **/favicon.ico

mapping.setUrlMap(Collections.singletonMap("**/favicon.ico",faviconRequestHandler();
return mapping;
}

@Bean
public ResourceHttpRequestHandler faviconRequestHandler() {
       ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler();
       requestHandler.setLocations(this.resourceProperties.getFaviconLocations());
       return requestHandler;
 }
}

ResourceProperties是一个springboot自带的有关配置映射的类,有默认的映射路径,如果想要修改的话可以继承+重写他的方法来自定义路径

(2)默认路径

①所有/webjars/**,都去classpath:/META-INF/resources/webjars/ 找资源

Webjars:以jar包的方式引入静态资源;

WebJars - Web Libraries in Jars

localhost:8085/webjars/jquery/3.3.1/jquery.js

引入jquery-webjar

XML 复制代码
<!‐‐引入jquery‐webjar‐‐>在访问的时候只需要写webjars下面资源的名称即可

<dependency>

    <groupId>org.webjars</groupId>

    <artifactId>jquery</artifactId>

    <version>3.3.1</version>

</dependency>

②/** 访问当前项目的任何资源,都去(静态资源的文件夹)找映射

"classpath:/META-INF/resources/",

"classpath:/resources/",

"classpath:/static/",

"classpath:/public/",

"/":当前项目的根路径

Localhost:8080/abc ===去静态资源文件夹里赵abc

③欢迎页

静态资源文件夹下的所有index.html页面

被"/**"映射

Localhost:8080/ 找index页面

相关推荐
全栈弄潮儿1 小时前
Python实战第7期:字典与集合
后端·python·编程语言
码事漫谈1 小时前
DeepSeek 又更新!但怎么有个分数往下掉?
后端
吃饱了得干活1 小时前
用 PageHelper 同步数据到 ES:能跑,但这几个坑得先知道
后端·elasticsearch
金銀銅鐵2 小时前
[Java] 借助GUI展示class文件的内容(v1.0版本)
jvm·后端·ai编程
土豆.exe2 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
皮皮林5512 小时前
Java 导出 Excel 利器:JXLS
后端
吃饱了得干活2 小时前
从 LIKE 查询到毫秒级搜索:Elasticsearch 核心原理与 Java 实战
后端·elasticsearch
小坏讲微服务3 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4