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页面

相关推荐
nice_lcj5209 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
码农小河6610 小时前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
IT_陈寒10 小时前
Redis大key删除为什么会导致服务卡顿?我的线上事故复盘
前端·人工智能·后端
系统集成-鹰翔10 小时前
ERP图片改名后仍命中识别缓存:缓存键、十分钟到期与调用计数
javascript·经验分享·后端
用户83562907805110 小时前
使用 Python 在 Excel 中添加和自定义迷你图
后端·python
码事漫谈10 小时前
给AI看一颗❤️,它就开始写递归了
后端
用户83562907805111 小时前
使用 Python 在 Excel 图表中添加趋势线与回归方程
后端·python
你三大爷11 小时前
Netty / Kafka / Redis 保序问题的源码对比与 NIO 框架主流解法
后端·架构
SL_staff11 小时前
从配置失效到逻辑复用:JVS-Logic 如何构建可治理的业务编排中枢
java·spring·产品
特立独行的猫A11 小时前
一份 Markdown 发十个平台:cspub 一稿多投
java·后端·python