iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot通过源码探究静态资源的映射规则实现
  • 204
分享到

SpringBoot通过源码探究静态资源的映射规则实现

2024-04-02 19:04:59 204人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

我们开发一个Spring Boot项目,肯定要导入许多的静态资源,比如CSS,js等文件 如果我们是一个WEB应用,我们的main下会有一个webapp,我们以前都是将所有的页面导在

我们开发一个Spring Boot项目,肯定要导入许多的静态资源,比如CSSjs等文件

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

1、静态资源映射规则

1.1、第一种映射规则

SpringBoot中,springMVC的web配置都在 WebmvcAutoConfiguration 这个配置类里面;

WebMvcAutoConfigurationAdapter 中有很多配置方法;其中就有一个添加资源处理方法:addResourceHandlers (),源码如下。


@Override
		protected void addResourceHandlers(ResourceHandlerReGIStry registry) {
			super.addResourceHandlers(registry);
			if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}
			ServletContext servletContext = getServletContext();
			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是将客户端(浏览器)资源(javascript,Css等)打成jar包文件,以对资源进行统一依赖管理。WebJars的jar包部署在Maven中央仓库上。

webjars官网

我们可以到webjars官网上找到自己需要的资源,在自己的工程中添加入maven依赖,即可直接使用这些资源了。

比如,我们要导入Jquery资源


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

导入后我们可以通过资源路径找到资源的存放位置并访问,我们在webjars网站导入的资源都符合下图的结构

在这里插入图片描述

通过路径访问,成功访问到静态资源!

在这里插入图片描述

1.2、第二种映射规则

下面我们继续分析源码

在这里插入图片描述

getStaticPathpattern():获得静态路径模式,点进去看一下源码


public String getStaticPathPattern() {
		return this.staticPathPattern;
	}

再看一下staticPathPattern的源码

在这里插入图片描述

/**就是当前目录下的所有静态资源都能识别,但是当前目录下具体指的又是什么呢?我们点开resourceProperties的源码便可看出来。源码如下:

在这里插入图片描述

上面源码很清楚的给出了我们四个静态资源路径,所以只要是这四个目录下的静态资源,都可以直接获取。

我们来测试一下,先补齐上面的目录,然后再resource目录放一个js资源

在这里插入图片描述

启动springboot应用测试:成功访问到静态资源!

在这里插入图片描述

1.3、总结

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


"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"

注意:

第一个目录的访问路径为localhost:8080/webjars/资源目录结构,后面三个访问路径为localhost:8080/资源名

第二种映射规则的优先级为:resources>static(默认)>public

2、自定义静态资源路径

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


spring.resources.static-locations=classpath:/coding/,classpath:/cheng/

但是通过下面源码我们可以看出,如果自定义了资源路径,那么上面默认的四个路径就失效了,所以最好不要自定义路径,使用springboot帮我们自动配置好的就行。


if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}

到此这篇关于SpringBoot通过源码探究静态资源的映射规则实现的文章就介绍到这了,更多相关SpringBoot 静态资源映射规则内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot通过源码探究静态资源的映射规则实现

本文链接: https://www.lsjlt.com/news/125198.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot通过源码探究静态资源的映射规则实现
    我们开发一个Spring Boot项目,肯定要导入许多的静态资源,比如css,js等文件 如果我们是一个web应用,我们的main下会有一个webapp,我们以前都是将所有的页面导在...
    99+
    2024-04-02
  • SpringBoot静态资源映射规则浅析
    目录1. 静态资源映射规则2. 欢迎页1. 静态资源映射规则 在项目中双击shift或ctrl+N搜索WebMvcAutoConfiguration.class文件,文件中的addR...
    99+
    2023-02-27
    SpringBoot静态资源映射 SpringBoot静态资源 SpringBoot资源映射
  • SpringBoot静态资源映射规则是什么
    这篇文章主要介绍了SpringBoot静态资源映射规则是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot静态资源映射规则是什么文章都会有所收获,下面我们一起来看看吧。1. 静态资源映射规则...
    99+
    2023-07-05
  • SpringBoot+Thymeleaf静态资源的映射规则说明
    目录Spring Boot中静态资源的映射规则Thymeleaf模板引擎的映射规则SpringBoot对静态资源的映射规则源码学习笔记Spring Boot中静态资源的映射规则 Sp...
    99+
    2024-04-02
  • SpringBoot+Thymeleaf静态资源的映射规则是什么
    本篇内容介绍了“SpringBoot+Thymeleaf静态资源的映射规则是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring ...
    99+
    2023-06-25
  • SpringBoot中对静态资源的映射规则有哪些
    本篇内容介绍了“SpringBoot中对静态资源的映射规则有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • SpringBoot静态资源映射的方法
    这篇“SpringBoot静态资源映射的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • SpringBoot web静态资源映射实现步骤详解
    目录静态资源映射规则自定义静态资源映射规则静态资源映射规则 “/**” 访问当前项目任何资源,全部找静态资源的文件夹进行映射 静态资源的文件夹包括: &quo...
    99+
    2024-04-02
  • 聊聊springboot静态资源加载的规则
    目录静态资源映射规则1.webjars2.springboot内置默认访问路径3.首页处理4.网站图标我们经常会使用springboot创建web应用,在springboot中金静态...
    99+
    2024-04-02
  • SpringBoot深入探究四种静态资源访问的方式
    目录1.默认的静态资源目录2.resources静态资源目录图片存放3. 静态资源访问3.1.通过路径访问静态资源3.2.通过配置类配置路径访问本地静态资源1.config2.访问结...
    99+
    2024-04-02
  • SpringBoot详细讲解静态资源导入的实现
    目录SpringBootWeb开发1. 静态资源导入webjars使用自己的静态资源总结2.制作特殊的首页图标转变Thymeleaf模板引擎引入Thymeleaf取值有无转义循环Sp...
    99+
    2024-04-02
  • nginx代理实现静态资源访问的示例代码
    目录一. 目标:二. 实现效果:三. 具体配置1. nginx配置本地静态工程代理2. win10配置本地域名实现域名访问3.nginx配置页面预览路由一. 目标: 为了通过ngin...
    99+
    2024-04-02
  • SpringBoot上传文件并配置本地资源映射来访问文件的实例代码
    1.准备工作 1、新建一个SpringBoot项目加上web依赖, 所有依赖 <dependency> <groupId>org.springframe...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作