Whitelabel Error Page 解决办法

本文介绍了解决Spring Boot应用中页面404错误的两种常见方法:确保Application启动类位置正确,以及检查URL与@GetMapping注解是否匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决办法:

  • 办法1:【Application 启动类 的位置不对】要将 Application.java 放在最外侧,即包含所有子包 ,spring-boot会自动加载启动类所在包下及其子包下的所有组件。如下图所示:

在这里插入图片描述

  • 方法2:【浏览器的 url 与注解 @GetMapping("/xxxx")不匹配】请注意:spring-boot 默认访问页面的目录是 templates

在这里插入图片描述

错误原因: 找不到请求的页面(404)

错误截图:
在这里插入图片描述

### Spring Boot Whitelabel Error Page 的解决方案 Spring Boot 中出现 `Whitelabel Error Page` 是因为应用无法找到请求路径对应的控制器映射,或者存在配置错误等问题。以下是针对该问题的全面分析和解决办法。 #### 1. 检查 Controller 配置 确保你的控制器类被正确定义并扫描到了。如果使用的是默认包扫描机制,则需要确认控制器所在的包及其子包位于主应用程序类所在包之下。例如: ```java package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class IndexController { @GetMapping("/") public @ResponseBody String home() { return "Welcome to the Home Page!"; } } ``` 上述代码定义了一个简单的根路径 `/` 映射[^4]。注意这里使用了 `@GetMapping` 注解替代原始的 `@RequestMapping(method = RequestMethod.GET)`,这是更现代的方式。 #### 2. 调整项目结构 如果你的 Web 控制器文件夹不在标准位置(即与主程序入口类处于同一父包下),可能会导致组件未被自动扫描到。建议将所有的控制层逻辑放置于类似于 `com.example.demo.controller` 这样的命名空间中,并保持其层次关系清晰合理[^3]。 #### 3. 使用正确的注解形式 有时开发者会混淆 `@Controller` 和 `@RestController` 的用途。对于返回 JSON 数据的情况应采用后者;而对于视图渲染则需保留前者配合模板引擎一起工作。比如下面的例子展示了如何通过 Thymeleaf 渲染 HTML 页面而不是直接响应字符串数据: ```html <!-- src/main/resources/templates/index.html --> <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head><title>Home</title></head> <body>Hello from Template!</body> </html> ``` 相应的 Java 方法如下所示: ```java @Controller public class ViewController { @GetMapping("/view") public String viewHomePage(){ return "index"; } } ``` 此处无需加任何额外标记即可实现跳转至指定资源文件的功能[^5]。 #### 4. 处理 POST 请求异常警告 当遇到类似 WARN 日志提示 “Request method 'POST' not supported”,这表明当前 URL 不支持所提交的方法类型。可以通过增加对应处理函数来消除此类告警信息。例如允许 GET/POST 同时生效可修改为如下样式: ```java @RequestMapping(value="/",method=RequestMethod.POST) public ResponseEntity<String> handlePost(@RequestBody(required=false) Map<String,Object> body){ System.out.println("Received post request with payload:"+body); return new ResponseEntity<>("Success!", HttpStatus.OK); } ``` 以上片段实现了对接收表单参数的支持功能。 #### 5. 测试验证改动效果 完成上述修正之后记得重启服务实例再次测试接口可用性状况。打开浏览器输入地址栏链接如 http://localhost:8080/test ,观察是否还能看到空白错误界面现象发生。正常情况下应该能够成功加载预期的内容显示出来[^2]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼丸丶粗面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值