如何解决IntelliJ IDEA中Spring项目Tomcat访问/home报404错误
404错误排查:Spring Boot + Tomcat访问/home路径失败
两个月前刚入职,很久没碰Spring框架了。现在在IntelliJ IDEA里启动Tomcat服务器,访问/home路径时弹出HTTP Status 404 – Not Found错误。鼠标悬停代码里的"home",IDEA能找到对应的home.html文件,但访问就是不行。就连之前能正常跑的旧项目现在也出同样问题,谷歌搜了方案没解决,求帮忙。
错误信息
HTTP Status 404 – Not Found
Type Status Report
Message The requested resource [/home] is not available
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
Apache Tomcat/9.0.65
相关代码
HomeController.java
package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HomeController { @RequestMapping("/home") public String landingPage() { return ("home"); } }
home.html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Landing page</h1> </body> </html>
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>demo</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
排查方向
- 检查html文件路径:Spring Boot + Thymeleaf默认要求html文件放在
src/main/resources/templates目录下,确认home.html的存放位置是否符合要求。 - 切换启动方式:Spring Boot自带内置Tomcat,直接启动带
@SpringBootApplication注解的主类试试,避免外部Tomcat配置错误(比如部署路径、上下文路径设置不当)。 - 核对访问路径:如果用外部Tomcat,查看部署配置的上下文路径,若设置了
/demo这类前缀,访问路径需改为http://localhost:8080/[上下文路径]/home。 - 清理缓存重建:执行IDEA的
Build -> Clean Project和Build -> Rebuild Project,清除缓存后重启服务器。 - 检查主类位置:Spring Boot主类需放在根包(如
com.example.demo)下,确保能扫描到HomeController所在的包,否则控制器不会被注册。 - 查看控制台日志:启动时留意控制台,若没有
Mapped "{[/home]}" onto public java.lang.String com.example.demo.HomeController.landingPage()这类日志,说明控制器未被Spring扫描到。
内容的提问来源于stack exchange,提问作者jonas
相关产品推荐
相关产品推荐

