在springboot中约定大于配置,当然对静态资源也有默认的约定。

Spring Boot 默认将 /** 所有访问映射到以下目录:

classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources

下面我将通过一个小demo来给大家展示一下

项目路径:

static ——可以将css/js/images文件放到这里
templates —— 可以将网页文件放在这里

springboot 配置静态文件路径乱码_静态资源

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 配置静态文件路径乱码_后端_02

总结:在springboot有些配置它已经默认配置好了,大家要注意这些默认配置,不要在这上面不停的采坑。

扩展

SpringBoot关于默认静态资源访问路径定义及自定义设置

如果您使用Spring Boot开发Web应用程序时,遇到无法访问static目录下的资源(如js、css、图片等),可以尝试以下几种解决方法:

  1. 确认static目录位置 在Spring Boot应用程序中,默认情况下,静态资源应该位于classpath:/static目录下。您可以在src/main/resources目录下创建一个static目录,并将您的静态资源放置其中。确保您的静态资源确实存储在该目录下。
  2. 确认静态资源是否被映射 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目录下的资源的问题。如果您仍然遇到问题,请检查应用程序的日志文件,以查看是否有其他异常信息。