springboot中添加静态资源的方式,默认的静态资源文件夹有哪些
通过webjar的方式引入静态资源访问popular webjar网站,里面有大量的最常用的静态资源webjar,以jar包的形式导入静态资源。类如jquery、vue、bootstrap等,都可以找到各种版本的依赖。以jquery3.5.0为例:在pom文件引入一下依赖:<dependency><groupId>org.webjars</gro...
- 通过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/" };
更多推荐
所有评论(0)