Spring Boot页面跳转404求助:mainscreen与about页面链接异常
解决方案:Spring Boot页面跳转404问题排查
针对你遇到的页面跳转404问题,按以下步骤逐一排查解决:
1. 移除重复的请求映射
你的AboutController中存在与MainScreenController重复的@GetMapping("/mainscreen")方法,且该方法返回redirect:/mainscreen会引发循环跳转,直接删除这段代码:
// 删除AboutController中的以下代码块 @GetMapping("/mainscreen") public String backToMainScreen() { return "redirect:/mainscreen"; }
2. 确认HTML文件存放路径
Spring Boot使用Thymeleaf时,默认从src/main/resources/templates目录加载视图文件,请确保mainscreen.html和about.html都放在该目录下,路径错误会直接导致视图无法找到。
3. 检查Thymeleaf依赖配置
确保项目依赖中包含Thymeleaf starter,否则Spring无法解析视图文件:
Maven(pom.xml)示例:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
Gradle(build.gradle)示例:
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
4. 验证控制器是否被Spring扫描
启动项目后查看控制台日志,确认存在类似以下的映射注册信息:
Mapped GET "/about" onto public java.lang.String com.example.demo.controllers.AboutController.showAboutPage() Mapped GET "/mainscreen" onto public java.lang.String com.example.demo.controllers.MainScreenController.listPartsandProducts(org.springframework.ui.Model,java.lang.String,java.lang.String)
如果没有上述日志,说明控制器未被扫描:
- 确认启动类(如
DemoApplication)位于com.example.demo包下,控制器在com.example.demo.controllers子包(默认@SpringBootApplication会扫描当前包及子包)。 - 若启动类包路径不同,需在启动类上添加
@ComponentScan(basePackages = "com.example.demo.controllers")指定扫描范围。
5. 检查应用上下文路径
如果项目配置了server.servlet.context-path(如application.properties中设置server.servlet.context-path=/myapp),页面链接需追加上下文路径:
<!-- mainscreen.html修改为 --> <a href="/myapp/about" class="btn btn-secondary btn-sm mb-3">About</a> <!-- about.html修改为 --> <a href="/myapp/mainscreen" class="btn btn-primary">Back to Main Screen</a>
6. 清理缓存并重启项目
- 清理IntelliJ缓存:点击
File -> Invalidate Caches...,选择Invalidate and Restart。 - 重启Spring Boot项目,避免热部署缓存导致的视图加载异常。
内容的提问来源于stack exchange,提问作者Brooke Martin
相关产品推荐
相关产品推荐

