JaeWon's Devlog
article thumbnail
반응형

웹 서비스를 개발하면서 404, 500 에러 등 많은 에러가 발생하고 각각의 에러에 맞는 화면을 보게 됩니다.

해당 글에서는 에러가 발생하면 해당 에러에 맞는 에러 페이지를 보여주도록 설정해보도록 하겠습니다.

 

개발환경은 아래와 같습니다.

  • SpringBoot : 2.4.4
  • Java8
  • thymeleaf

SpringBoot에서 간단하게 에러페이지를 설정해보도록 하겠습니다.

1. 에러페이지를 관리할 Controller를 생성하여 ErrorController 인터페이스를 상속받아 에러 컨트롤러를 생성합니다.

2. error 페이지를 만듭니다. 

1. 에러컨트롤러 생성(CustomErrorController)

- 기본적으로 Spring Boot는 모든 Error를 적적한 방식으로 처리하는 /error 로 맵핑을 제공하고 있으며, servlet container에서 global 에러 페이지로 등록됩니다.

- Error 페이지를 관리할 컨트롤러를 생성합니다.

package com.study.jaewonstudy.webservice.web;

import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;

@Controller
public class WebErrorController implements ErrorController {

    @Override
    public String getErrorPath() {
        return null;
    }

    @GetMapping("/error")
    public String handleError(HttpServletRequest request) {
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);

        if(status != null){
            int statusCode = Integer.valueOf(status.toString());

            if(statusCode == HttpStatus.NOT_FOUND.value()) {
                return "error/404error";
            } else {
                return "error/error";
            }
        }

        return "error/error";
    }

}
  • 원하시는 이름으로 컨트롤러를 생성하고, ErrorContorller 인터페이스를 상속(implements)받습니다.
  • getErrorPath () 메서드를 재정의하여 오류 발생시 호출 할 사용자 지정 경로(에러페이지)를 지정합니다.
    그러나 버전 SpringBoot 2.3.x부터 이 방법을 사용하지 않으며 대신 server.error.path 속성(/error)을 사용하여 사용자 지정 경로(에러페이지)를 지정하도록 합니다.
참고!!!
getErrorPath () 메서드는 아직 ErrorController 인터페이스에서 완전히 제거되지 않았기 때문에, 재정의는 필수입니다.
그렇지만, 해당 코도는 무시가 될 것이므로 null을 반환하도록 합니다.
  • @Controller로 해당 클래스에 어노테이션을 추가하고,  /error  경로로 매핑을 하여 에러에 대한 호출을 처리하도록 합니다.
  • request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE) 는 /error로 들어온 에러의 status를 불러오도록 합니다. (ex: 404, 500, 403 ...)
  • 기본적으로 제일 많이 사용되는 404에러는 404에러페이지로, 이외 나머지 에러는 기본 에러페이지로 이동하도록 합니다.
  • return 경로는 에러페이지를 생성한 경로로 작성합니다.

2. 에러페이지 생성하기

- 해당 글에서는 thymeleaf를 사용하고 있으므로, resource - templates - error 아래에 html 파일을 생성하도록 하겠습니다.

- 각각의 원하시는 에러페이지를 생성하시거나, 찾아서 페이지를 등록합니다.(ex: https://freefrontend.com/500-error-page-html-templates/)


참고

- https://www.baeldung.com/spring-boot-custom-error-page

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!