【Spring Boot学习笔记】——webjar静态资源映射规则

SpringBoot对静态资源的映射规则

之前的web应用都是有一个web 或者webapp等一些目录来存放css,js等这些文件。但是这些在springboot中是不一样的。

在这里插入图片描述

那么怎么引入静态资源?

接着往下
WebMvcAuotConfiguration.class文件代码部分

	WebMvcAuotConfiguration:
		@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));
			}
		}


在这里插入图片描述
解释下/webjars/**

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

  • webjars:以jar包的方式引入静态资源;
    我们可以引入maven依赖 在http://www.webjars.org/上面找相应的依赖就可以

在这里插入图片描述

引入jquery-webjar的maven依赖

在这里插入图片描述

注意下面的图片中jquery3.3.1的路径。正好对应classpath:/META-INF/resources/webjars/

在这里插入图片描述

也就是,如果我们访问http://localhost:8080/webjars/jquery/3.3.1/jquery.js 就可以访问到我们的静态资源了。
在这里插入图片描述

<!--引入jquery-webjar-->在访问的时候只需要写webjars下面资源的名称即可
		<dependency>
			<groupId>org.webjars</groupId>
			<artifactId>jquery</artifactId>
			<version>3.3.1</version>
		</dependency>

那么咱么自己编写css,js还有图片放哪呢?
往下看:

设置和静态资源有关的参数,缓存时间等

@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)
public class ResourceProperties implements ResourceLoaderAware {
  //可以设置和静态资源有关的参数,缓存时间等

WebMvcAuotConfiguration.class文件部分代码,简单了解

	//静态资源文件夹映射
			if (!registry.hasMappingForPattern(staticPathPattern)) {
				customizeResourceHandlerRegistration(
						registry.addResourceHandler(staticPathPattern)
								.addResourceLocations(
										this.resourceProperties.getStaticLocations())
						.setCachePeriod(cachePeriod));
			}

"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射
静态资源问价夹有如下:

"classpath:/META-INF/resources/", 
"classpath:/resources/",
"classpath:/static/", 
"classpath:/public/" 
"/":当前项目的根路径

localhost:8080/abc === 去静态资源文件夹里面找abc

在这里插入图片描述

所以我们可以直接在resources文件夹下创建/META-INF/resources/,/resources,这几个目录。
在这里插入图片描述

举个例子:
在这里插入图片描述
我们要访问META-INF/resources下面的jquery.js文件。

输入
http://localhost:8080/jquery.js
结果 在这里插入图片描述
访问resources/resources/js/jquery.js文件,同样获取到了
在这里插入图片描述
在这里插入图片描述

配置欢迎页,首页

重要的放在前面,index放在静态资源文件夹中,都可以被默认地址访问到,http: //localhost:8080
输入http://localhost:8080/一般都会404
在这里插入图片描述
一般情况下:
欢迎页,静态资源文件夹下的所有index.html页面,被 "/**"映射

我们在public文件夹下编写一个index.html文件。
在这里插入图片描述

输入 localhost:8080/ 找index页面
在这里插入图片描述

配置图标

所有的 **/favicon.ico 都是在静态资源文件下找;

这都是图标在这里插入图片描述

//配置喜欢的图标
		@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;
			}

		}

定义自己的静态资源文件夹路径

我们只能覆盖原来配置的路径
在这里插入图片描述
在配置文件中添加代码

spring.resources.static-locations=classpath:/hello,classpath:/world

此时我们的静态资源文件夹只有hello和world两个,之前的默认的public,static等等都不能用了。
所以一般我们不去配置这个玩意。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值