1. 通过webjar的方式引入静态资源

访问popular webjar网站,里面有大量的最常用的静态资源webjar,以jar包的形式导入静态资源。类如jquery、vue、bootstrap等,都可以找到各种版本的依赖。
以jquery3.5.0为例:在pom文件引入一下依赖:

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

在html页面中引入的方式为:

<script src="webjars/jquery/3.5.0/jquery.js"></script>

查看一下webjar下的jquery路径:
在这里插入图片描述
2. 通过springboot默认的静态资源文件夹路径导入

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

比如在resources目录下创建static/js/将jquery的静态资源放入其中。
在这里插入图片描述
html中引入js静态资源,这里需要注意src最前面不要加static,上面的五个路径在逻辑上是等价的,都是根路径。另外提一嘴,java和resources目录只是个源码目录,编译过后都是根路径。

<script src="/js/jquery.js"></script>

页面上也可以通过:http://localhost:8080/js/jquery.js来进行静态资源的直接访问。
3. 项目首页index.html可放置在任意的静态资源文件件下

补充:
在org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration配置类中可查看springboot默认的配置,在下面这段代码中,说明了一切。

		@Override
		public void addResourceHandlers(ResourceHandlerRegistry registry) {
			if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}
			Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
			CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();
			if (!registry.hasMappingForPattern("/webjars/**")) {
				customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**")
						.addResourceLocations("classpath:/META-INF/resources/webjars/")
						.setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
			}
			String staticPathPattern = this.mvcProperties.getStaticPathPattern();
			if (!registry.hasMappingForPattern(staticPathPattern)) {
				customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern)
						.addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations()))
						.setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
			}
		}

在这里插入图片描述
其中,最下面的那个getResourceLocations(this.resourceProperties.getStaticLocations())指向的是一个静态数组:

	private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
			"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
Logo

前往低代码交流专区

更多推荐