导读:本期聚焦于小伙伴创作的《Spring Boot视图渲染失败出现404错误有哪些常见原因和解决方案》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Spring Boot视图渲染失败出现404错误有哪些常见原因和解决方案》有用,将其分享出去将是对创作者最好的鼓励。

Spring Boot开发中视图渲染返回404错误是非常常见的问题,出现这类问题通常和配置、路径映射、文件位置等多个环节相关,需要逐一排查定位根因。

Spring Boot视图渲染失败出现404错误有哪些常见原因和解决方案

常见原因分析

1. 视图解析器配置错误

如果使用的是Thymeleaf等模板引擎,没有正确配置视图解析器的前缀和后缀,会导致框架找不到对应的模板文件。比如Thymeleaf默认的前缀是classpath:/templates/,后缀是.html,如果手动修改了配置但路径不正确,就会触发404。

2. 控制器请求映射不匹配

控制器的@RequestMapping注解配置的路径和实际请求的URL不一致,或者方法返回的逻辑视图名和模板文件名不匹配,都会导致视图渲染失败。比如控制器返回index,但模板文件是home.html,就会出现404。

3. 模板文件位置错误

Spring Boot默认的模板文件存放路径是src/main/resources/templates/,如果开发者把模板文件放到了其他目录,比如static目录或者自定义的非默认路径,又没有额外配置,框架就无法找到对应的模板文件。

4. 静态资源访问冲突

如果请求的URL被静态资源处理器优先匹配,而静态资源目录下没有对应的文件,也会返回404。比如请求/index.html,而static目录下没有这个文件,同时控制器也没有映射/index路径,就会出现问题。

对应解决方案

1. 检查视图解析器配置

如果是使用Thymeleaf,首先确认依赖是否正确引入,然后在application.properties或者application.yml中检查配置:

# Thymeleaf配置
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false

如果是自定义视图解析器,需要确认前缀和后缀的路径是否正确,没有多余的斜杠或者拼写错误。

2. 核对控制器映射和返回视图名

检查控制器的请求路径和返回的逻辑视图名是否正确,以下是一个正确的示例:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class IndexController {
    // 请求路径是/index
    @GetMapping("/index")
    public String index() {
        // 返回的逻辑视图名是index,对应templates/index.html
        return "index";
    }
}

如果返回的逻辑视图名带路径,比如return "user/index",那么对应的模板文件应该是templates/user/index.html

3. 确认模板文件存放位置

把模板文件放到默认的src/main/resources/templates/目录下,如果是自定义目录,需要在配置中添加对应的前缀:

# 自定义模板路径为classpath:/my-templates/
spring.thymeleaf.prefix=classpath:/my-templates/

同时确认文件名和返回的逻辑视图名完全一致,包括大小写,因为部分操作系统对文件名大小写敏感。

4. 处理静态资源冲突

如果需要访问静态资源,把静态文件放到src/main/resources/static/src/main/resources/public/等默认静态资源目录下。如果同时存在控制器映射和静态资源文件,需要注意请求路径的优先级,避免冲突。如果需要排除静态资源对控制器路径的干扰,可以在配置中添加静态资源处理规则:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 配置静态资源路径,排除/static/**路径的控制器映射
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
}

排查小技巧

可以在控制器方法中打印日志,确认方法是否被调用,如果方法没有被调用,说明是请求路径映射的问题;如果方法被调用但返回404,说明是视图解析或者模板文件的问题。也可以开启Spring Boot的调试日志,查看视图解析器的具体查找过程:

# 开启Spring Web的调试日志
logging.level.org.springframework.web=DEBUG

通过日志可以清楚看到框架查找模板文件的路径,快速定位问题所在。

Spring_Boot视图渲染404错误Thymeleaf修改时间:2026-07-06 14:36:26

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。