Whitelabel Error Page是什么?Spring Boot的兜底页
页面突然500,白底黑字,上面写着 Whitelabel Error Page——很多新手的第一反应是"我的代码崩了"。真相恰恰相反:这不是报错页,是Spring Boot在替你兜底。
现象:白板上那三行字,都是线索
典型的 Whitelabel 页面就三行字:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
status=500
注意第二行,它把答案直接写出来了:“这个应用没有为 /error 配置任何映射,所以给你看了这个兜底页”。也就是说——不是系统不知道出错了,是它出了错之后,发现你没准备"出错以后给人看什么",只好拿默认白板顶上。
前因:Spring Boot 的错误处理链路
Spring Boot 内置了一套默认的错误处理机制,核心是 BasicErrorController。完整的链路是这样的:
所以看到白板,只说明一件事:你没给自己写错误页,它拿默认的顶上。 这个机制对新手很友好——项目刚起步时,出错了至少有页面可看;但把它带到生产环境,就是事故。
顺带一提:如果接口返回的是 JSON(前后端分离项目),白板不会出现,Spring Boot 会返回一段 JSON 错误结构——同样的机制,两种长相。
原理:白板上的信息是从哪来的
白页上的 status、error、message 不是随便写的,它们来自"error attributes"——状态码、异常类名、错误消息。Spring Boot 把这些塞进模型,默认页把它们原样画出来。而且它还能给更多:配置 server.error.include-stacktrace=always 之后,堆栈也会被画进页面。
所以这块白板本质上是信息大公开:访问者能看到你的异常类名、内部路径、框架信息,甚至完整堆栈。
后过:带着白板上线,会怎样
修法:给它换个自己的错误页
Spring Boot 有个"约定大于配置"的规矩:templates/error/ 下的 500.html,会被自动用作500错误页。放对位置,它自己就知道什么时候该出来:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>出错了</title></head>
<body>
<h1>页面开小差了</h1>
<p>请稍后再试,或联系管理员。</p>
</body>
</html>
重启,再触发一次错误——白板不见了,出来的是你自己的页面。
进阶两步:
预防:错误处理是项目的基础设施
错误页、统一异常处理、日志——这三样是项目开工就该有的"基础设施",不是上线前才补的补丁。课设、毕设阶段就养成这个习惯,面试被问"系统怎么做错误处理"时,这就是一个现成的加分答案。
总结
记住这条:看到 Whitelabel,先看控制台堆栈找真凶,再给它配个自己的错误页——别让默认白板替你见人。
需要SpringBoot管理系统源码、SQL脚本、部署文档做学习参考,可以私信联系。项目仅作为编程学习、课程设计参考素材,不代写论文。



