• 티스토리 홈
  • 프로필사진
    아몬드맛빼빼로
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
아몬드맛빼빼로
  • 프로필사진
    아몬드맛빼빼로
    • 분류 전체보기 (46)
      • Java (8)
      • C (3)
      • Springboot (7)
      • Kotlin (2)
      • 회고 (5)
      • Backend (13)
      • 기타 (5)
      • DevOps (3)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • [Springboot] Whitelabel Error Page와 Tomcat Error Page
    2025년 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
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바