静态资源映射的相关代码如下:
方法1:直接在配置文件application.properties中自己指定
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
}
如果是自己指定的,那么自动配置文件的配置就失去了作用,真正有效果的是自己配置的
方法2:通过webjars
this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
- 需要通过pom文件引入依赖
- 下载完之后,就会在对应的jar包里出现下面的结构(
/META-INF/resources/webjars/
)。访问localhost:8080/webjars/……
就能找到/META-INF/resources/webjars/
里面的静态资源。所以可以将静态资源放到/META-INF/resources/webjars/
中,然后通过localhost:8080/webjars/……
进行访问
方法3:通过resources文件夹下的public,resourses,static文件夹
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});
}
});
访问localhost:8080/……
时,会映射到resources/public
,resources/resourses
和resources/static
中。当这三个文件夹下有三个同名文件,并访问这个文件时,优先级如下:resourses > static > public
【注意】resources/templates
下的文件不能直接映射,需要通过controller
来访问
那么怎么通过controller访问templates里面的html文件呢?
- pom中导入thymeleaf依赖
- 将html文件放在resources下的templates文件夹下
- return的test即为文件名