- [Springboot] Whitelabel Error Page와 Tomcat Error Page2025년 04월 26일
- 아몬드맛빼빼로
- 작성자
- 2025.04.26.:52
반응형
WhiteLabel ErrorPage란 무엇인가?
SpringBoot 개발자라면 누구나 한 번쯤 이 밋밋한 메시지를 봤을 것이다. 개발 초기나 서버 설정이 잘못되었을 때, 혹은 단순히 요청한 URL에 해당하는 매핑이 없을 때 이런 메시지가 튀어나온다.

분명 SpringBoot는 Tomcat을 내장하고 있는데, 왜 Tomcat의 기본 오류 페이지 대신 이런 WhiteLabel 페이지가 뜨는 것일까?
그 이유는 SpringBoot가 자체적으로
BasicErrorController라는 클래스를 통해 오류를 처리하기 때문이다. 이 컨트롤러는 애플리케이션에서 에러가 발생했을 때 별다른 처리 로직이 없다면 자동으로 동작해, 기본적인 오류 응답을 제공한다. 서버가 죽지 않고 정상적으로 오류를 응답할 수 있도록 해주는 친절한 기본 장치인 셈이다.BasicErrorController의 역할
BasicErrorController는 다양한 HTTP 오류 상태 코드(예: 404, 500 등)를 감지하고, 상황에 따라 HTML 페이지나 JSON 응답을 반환한다. 웹 애플리케이션이나 REST API 서버 모두에 대응할 수 있도록 설계되어 있다.Tomcat의 오류 페이지가 가끔 나오는 이유...
아주 가끔 Tomcat의 오류 페이지가 튀어 나올 때도 있다.그런 경우는 보통 2가지 상황인데 요청 헤더가 너무 크거나 파싱에 실패하였을때 Spiring에 도달하기 전 Tomcat에서 오류가 나며 튀어나오는 경우,그리고 희귀하지만 Tomcat은 살아있고 Spring은 죽어 있을때 오류가 Tomcat까지 전파됬을때이다.
WhiteLabel ErrorPage 비활성화 방법
WhiteLabel 페이지를 더 이상 보고 싶지 않다면, 설정 파일 하나만 수정하면 된다.
application.properties파일에 다음을 추가하자.server.error.whitelabel.enabled=false이 설정을 추가하고 서버를 재시작하면, 더 이상 WhiteLabel 페이지가 아닌 Tomcat의 기본 오류 페이지가 나타난다.
비록 Tomcat 페이지도 멋지진 않지만
커스텀 에러 페이지?
보다 멋진 에러 페이지를 위해서 직접 컨트롤러를 작성할 수 있다.
@Controller public class CustomErrorController implements ErrorController { @RequestMapping("/error") public String handleError(Model model, HttpServletRequest request) { Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); if (status != null) { int statusCode = Integer.valueOf(status.toString()); model.addAttribute("statusCode", statusCode); } return "customError"; } }이
CustomErrorController는/error경로에 대한 요청을 가로채서 적절한 에러 정보를 모델에 담아 뷰로 전달한다.커스텀 에러 페이지 작성
컨트롤러가 준비되었다면, 이제 에러 페이지 템플릿을 작성할 차례다.
src/main/resources/templates디렉터리에customError.html파일을 생성하도록 한다.<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>펑!</title> </head> <body> <h1>🤯</h1> </body> </html>
이렇게 구성하면 위와 같은 멋진 에러 페이지를 만들 수 있다.
추가 커스터마이징
원한다면 상태 코드별로 다른 에러 페이지를 만들 수도 있다. 예를 들어 404 페이지와 500 페이지를 구분해서 안내할 수도 있다. 이를 통해 사용자에게 훨씬 세밀하고 친절한 경험을 제공할 수 있다.
'Springboot' 카테고리의 다른 글
[Springboot] Spring에서 Controller 부터 만드는 이유 (0) 2025.09.07 [Springboot] SpringBoot 4.0?? (0) 2025.08.12 [Springboot] Spring Batch (0) 2025.03.05 [Springboot] Spring Cloud (1) 2025.02.05 [Springboot] Thread Pool과 Spring Scheduler (1) 2024.12.30 다음글이전글이전 글이 없습니다.댓글