springboot使用web开发静态资源处理

本文介绍了SpringBoot如何处理静态资源,包括静态资源映射规则、webjars的使用以及自定义静态资源路径。SpringBoot默认会从`/META-INF/resources/`, `/resources/`, `/static/`, `/public/`四个路径查找静态资源,并且存在优先级顺序。通过配置文件可以自定义静态资源路径,这会导致默认路径失效。" 131344938,18158630,深度学习训练样本库构建与Matlab实战,"['深度学习', '开发语言', 'Matlab', '数据处理']
摘要由CSDN通过智能技术生成

静态资源处理

前言:在项目中引入前端资源,应该有许多的静态资源,比如css,js,图片资源等等,如果我们是一个web应用,我们的main下会有一个webapp,我们以前都是将所有的页面导在这里面的,但是我们现在的pom呢,打包方式是为jar的方式,SpringBoot对于静态资源放置的位置,是有规定的

静态资源映射规则

在springboot中,springMVC的web配置都在WebMvcAutoConfiguration这个配置类里面,其中有一个方法:addResourceHandlers 添加资源处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

protected void addResourceHandlers(ResourceHandlerRegistry registry) {
			super.addResourceHandlers(registry);
			//原本已经添加有默认的资源映射规则,isAddMappings()方法调用了addMappings属性默认为true,如果我们在配置文件中设置了资源映射规则(application.properties/.yaml)则默认的资源映射规则失效
			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));
				}
			});
		}

有两种方式可以配置静态资源

1. 使用webjars配置

从源码中可以看出,所有的 /webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 找对应的资源

什么是webjars?

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

要使用webjars去官网搜索即可https://www.webjars.org

假设我们需要导入JQuery静态资源
在这里插入图片描述
引入jQuery对应版本的pom依赖即可

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.6.0</version>
</dependency>

查看webjars目录结构,并访问Jquery.js文件
在这里插入图片描述
访问:只要是静态资源,SpringBoot就会去对应的路径寻找资源,即从路径classpath:/META-INF/resources/webjars/下面开始拼接路径寻找资源,我们这里访问:http://localhost:8080/webjars/jquery/3.6.0/jquery.js

结果:访问成功
在这里插入图片描述

  1. 使用自己的静态资源导入

在这里插入图片描述
Ctrl + 鼠标左键进入该getStaticLocations()方法

在这里插入图片描述

Ctrl + 鼠标左键进入该staticLocations属性
在这里插入图片描述

如果访问当前项目的任意资源 “/**”,则会默认从

				registration.addResourceLocations(this.resourceProperties.getStaticLocations());

resourceProperties.getStaticLocations()路径下去寻找,也就是从这四个路径中去访问寻找静态资源路径

{ "classpath:/META-INF/resources/",
				"classpath:/resources/", "classpath:/static/", "classpath:/public/" }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:四个目录存放的静态资源可以被我们识别

  • “classpath:/META-INF/resources/”
  • “classpath:/resources/”
  • “classpath:/static/”
  • “classpath:/public/”

可以在resources根目录下新建对应的文件夹,都可以存放我们的静态文件
在这里插入图片描述

“classpath:/META-INF/resources/”“classpath:/resources/”、“classpath:/static/”、"classpath:/public/"四个资源路径存放同一个资源时,有优先级顺序

在/META-INF/resources/文件夹下资源文件写hello1、在resources文件夹下资源文件写hello2、在static文件夹下资源文件写hello3、在public文件夹下资源文件写hello4

浏览器访问后:
在这里插入图片描述
删除/META-INF/resources/文件夹下的资源文件时
在这里插入图片描述
删除resources文件夹下的资源文件时,

在这里插入图片描述

即优先级为"/META-INF/resources/">“classpath:/resources/”>“classpath:/static/”>“classpath:/public/”

自定义静态资源路径

如果我们在application.properties/.yaml配置文件中配置了自己的静态资源路径,则默认的静态资源路径失效
在这里插入图片描述

自己通过配置文件来指定一下,哪些路径文件夹是需要我们放静态资源文件的,我们定义自己修改的静态资源路径,则默认静态资源路径/**则会失效

spring:
  mvc:
    static-path-pattern: /chenhui/**

结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值