SpringBoot ---- Web开发静态资源处理和首页定制

本文详细介绍了SpringBoot中静态资源的处理方式,包括资源映射规则、webjars的使用及自定义静态资源路径的方法。此外,还讲解了首页处理和favicon.ico的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态资源处理

静态资源映射规则

首先,我们搭建一个普通的SpringBoot项目

写请求非常简单,那我们要引入我们前端资源,我们项目中有许多的静态资源,比如css,js等文件,这个SpringBoot怎么处理呢?

如果我们是一个web应用,我们的main下会有一个webapp,我们以前都是将所有的页面导在这里面的,对吧!但是我们现在的pom呢,打包方式是为jar的方式,那么这种方式SpringBoot能不能来给我们写页面呢?当然是可以的,但是SpringBoot对于静态资源放置的位置,是有规定的!

我们先来聊聊这个静态资源映射规则:

SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration 这个配置类里面;

我们可以看到WebMvcAutoConfiguration 这个配置类中有很多配置方法;

有一个方法:addResourceHandlers 添加资源处理

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
	super.addResourceHandlers(registry);
	if (!this.resourceProperties.isAddMappings()) {
	    // 如果静态资源路径已近自定义了,那么下面的配置全部失效
		logger.debug("Default resource handling disabled");
		return;
	}
	ServletContext servletContext = getServletContext();
	// 第一种:webjars 路径
	addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
	// 第二种:静态资源配置
	addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
		registration.addResourceLocations(this.resourceProperties.getStaticLocations());
		if (servletContext != null) {
			registration.addResourceLocations(new ServletContextResource(servletContext, SERVLET_LOCATION));
		}
	});
}

读一下源代码:比如所有的 /webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 找对应的资源;

什么是webjars 呢?

Webjars本质就是以jar包的方式引入我们的静态资源 , 我们以前要导入一个静态资源文件,直接导入即可。

使用SpringBoot需要使用Webjars,我们可以去搜索一下:

网站:https://www.webjars.org

要使用jQuery,我们只要要引入jQuery对应版本的pom依赖即可!

导入完毕,查看webjars目录结构,并访问jquery.js文件!
在这里插入图片描述
访问:只要是静态资源,SpringBoot就会去对应的路径寻找资源,我们只需要访问http://localhost:8080/webjars/**就行,比如我们访问刚刚导入的jquery.js静态资源

我们这里访问:http://localhost:8080/webjars/jquery/3.4.1/jquery.js

在这里插入图片描述

第二种静态资源映射规则

那我们项目中要是使用自己的静态资源该怎么导入呢?我们看addResourceHandlers方法的下一行代码;

我们去找staticPathPattern发现第二种映射规则 :/** , 访问当前的项目任意资源,它会去找 resourceProperties 这个类,我们可以点进去看一下分析:
在这里插入图片描述

进入方法:然后再点击进去,看看这个静态资源路径到底是什么
在这里插入图片描述
然后你点进去了你会发现有这么几个路径
在这里插入图片描述
ResourceProperties 可以设置和我们静态资源有关的参数;这里面指向了它会去寻找资源的文件夹,即上面数组的内容。

所以得出结论,以下四个目录存放的静态资源可以被我们识别:

"classpath:/META-INF/resources/"      # 这个就不说了,就是上面的webjars对应的静态资源路径
"classpath:/resources/"    # 这3个我发个截图应该就懂了
"classpath:/static/"
"classpath:/public/"

在这里插入图片描述
比如我们访问 http://localhost:8080/xx.js , 他就会去这些文件夹中寻找对应的静态资源文件;

优先级:resources > static > public

自定义静态资源路径

我们也可以自己通过配置文件来指定一下,哪些文件夹是需要我们放静态资源文件的,在application.properties(yml)中配置;

比如:

在这里插入图片描述

访问:
在这里插入图片描述
一旦自己定义了静态文件夹的路径,原来的自动配置就都会失效了!

首页处理

静态资源文件夹说完后,我们继续向下看源码!可以看到一个欢迎页的映射,就是我们的首页!

找到一个welcomePageHandlerMapping的类
在这里插入图片描述
点进去继续看

在这里插入图片描述

欢迎页,静态资源文件夹下的所有 index.html 页面;被 /** 映射。

比如我访问 http://localhost:8080/ ,就会找静态资源文件夹下的 index.html

新建一个 index.html ,在我们上面的3个目录中任意一个;然后访问测试 http://localhost:8080/ 看结果!
在这里插入图片描述

favicon.ico

在新版本中什么都不要配置,只需要将 favicon.ico 放到static 目录下就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值