idea 创建一个 web 项目
新建 controller 包下 Java 类,用来查验地址是否能成功运行
java
package com.demo.web.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello World";
}
}
初始 resources 目录下
static 包下放静态资源
templates 包下放模板

分析源码:
双击 shift 搜索 WebMvcAutoConfiguration,找到 addResourceHandlers 方法
可以看到 getWebjarsPathPattern() 方法路径 classpath:/META-INF/resources/webjars/
java
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
} else {
this.addResourceHandler(registry, this.mvcProperties.getWebjarsPathPattern(), "classpath:/META-INF/resources/webjars/");
this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (this.servletContext != null) {
ServletContextResource resource = new ServletContextResource(this.servletContext, "/");
registration.addResourceLocations(new Resource[]{resource});
}
});
}
}
WebJars
WebJars 是打包到 JAR(Java Archive)文件中的客户端 Web 库(例如 jQuery 和 Bootstrap)

pom.xml 导入依赖:
XML
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.7.1</version>
</dependency>
导入成功

点进 getStaticPathPattern() 获得静态资源的路径方法,/** 表示当前目录下全都识别
java
private String staticPathPattern = "/**";
WebMvcProperties.class:

以下目录都能访问
resources 目录下新建一个 public 包,写个 1.js,随便写个 hello
启动后直接访问 localhost:8080/1.js,显示 hello
总结:
在 SpringBoot 中,可以使用以下方式处理静态资源:
-
webjars
-
public
-
static(默认)
-
/**
-
resources
其中,优先级顺序:
resources > static > public