基于Spring Initializr开发的Hello World Spring MVC应用404问题排查
排查Spring Boot MVC 404错误的步骤
针对你遇到的访问/helloWorld返回404的问题,按以下步骤逐一排查:
1. 检查静态资源文件位置
Spring Boot默认会从src/main/resources/static、src/main/resources/public、src/main/resources/resources或src/main/resources/META-INF/resources这些目录加载静态HTML文件。
- 确认你的
helloWorld.html是否放在上述任意目录下。如果误放在src/main/resources/templates目录,由于你没有引入Thymeleaf等模板引擎依赖,Spring无法解析该路径下的视图,会导致404。
2. 验证控制器类的注解
- 确保控制器类上标注的是
@Controller而不是@RestController。@RestController会把方法返回值直接作为响应体返回(比如返回字符串"helloWorld.html"),而不会去查找对应的静态页面;@Controller才会触发视图解析逻辑。 - 示例正确控制器结构:
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloWorldController { @RequestMapping("/helloWorld") public String helloWorld() { return "helloWorld.html"; } }
3. 确认控制器包扫描范围
Spring Boot默认只会扫描启动类所在包及其子包下的组件。
- 检查你的控制器类是否和启动类(比如
HelloWorldSpringWebAppApplication)在同一个包或其子包内。如果控制器放在完全无关的包下,需要在启动类上添加@ComponentScan(basePackages = "你的控制器包路径")来指定扫描范围。
4. 检查静态资源访问路径匹配
如果你的helloWorld.html放在static目录下,控制器方法返回值可以简化为"helloWorld"(不带.html后缀),Spring Boot会自动拼接后缀找到对应静态文件。另外,也可以直接访问http://localhost:8080/helloWorld.html测试静态资源是否能正常加载,以此排除资源本身的问题。
5. 查看控制台日志
启动应用时,查看控制台输出,确认是否有如下类似日志:
Mapped "{[/helloWorld]}" onto public java.lang.String com.example.controller.HelloWorldController.helloWorld()
如果没有这条日志,说明控制器的请求映射没有被Spring正确注册,回到步骤2、3排查包扫描和注解问题。
内容的提问来源于stack exchange,提问作者Amar
相关产品推荐
相关产品推荐

