在springboot中约定大于配置,当然对静态资源也有默认的约定。
Spring Boot 默认将 /** 所有访问映射到以下目录:
classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
下面我将通过一个小demo来给大家展示一下
项目路径:
static ——可以将css/js/images文件放到这里
templates —— 可以将网页文件放在这里
index.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
正确使用姿势:
<img src="/images/test.jpg">
错误使用姿势:
<img src="/static/images/test.jpg">
hello world
</body>
</html>
controller
@Controller
public class HelloController {
@RequestMapping("/")
public String index(ModelMap map, HttpServletRequest request) {
return "index";
}
}
在浏览器地址栏输入 http://localhost:8080/
下面就是显示的效果了(大家自己去意会)
总结:在springboot有些配置它已经默认配置好了,大家要注意这些默认配置,不要在这上面不停的采坑。
扩展
SpringBoot关于默认静态资源访问路径定义及自定义设置
如果您使用Spring Boot开发Web应用程序时,遇到无法访问static目录下的资源(如js、css、图片等),可以尝试以下几种解决方法:
- 确认static目录位置 在Spring Boot应用程序中,默认情况下,静态资源应该位于classpath:/static目录下。您可以在src/main/resources目录下创建一个static目录,并将您的静态资源放置其中。确保您的静态资源确实存储在该目录下。
- 确认静态资源是否被映射 Spring Boot会自动将classpath:/static目录下的静态资源映射到根路径下。例如,如果您的应用程序的上下文路径为“/”,则路径“/js/myscript.js”将映射到classpath:/static/js/myscript.js。如果您的静态资源没有被正确映射到根路径下,可以在应用程序的配置类中添加以下代码:
```
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
}
}```
该代码将将classpath:/static目录下的所有资源映射到根路径下。
3. 确认静态资源是否被正确引用 确保您的HTML页面中引用的静态资源路径正确。如果您的静态资源存储在static目录的子目录中,则需要使用相对路径或绝对路径来引用它们。例如,如果您的HTML页面在templates目录下,而静态资源在static/js目录下,则可以在HTML页面中使用以下代码引用脚本:
```
<script src="../static/js/myscript.js"></script>
```
上述方法可以帮助您解决Spring Boot无法访问static目录下的资源的问题。如果您仍然遇到问题,请检查应用程序的日志文件,以查看是否有其他异常信息。