[Spring] 스프링에서 HTML 오류 페이지 처리하기

정적 오류 페이지를 보여주고 싶다면, resources/static

동적 오류 페이지를 보여주고 싶다면, 뷰 템플릿 경로인 resources/templates

둘 중 자기가 보여주고자 하는 경로에 /error 폴더를 만들어 이 error 폴더에 발생하는 HTTP 상태 코드 이름의 HTML파일을 만들어서 넣어두기만 하면 됩니다.

5xx, 4xx는 500번 대, 400번 대 오류를 처리 해주며, 구체적인 오류코드 (ex: 404, 500)이 있다면 이 구체적인 오류코드 이름의 페이지가 우선순위가 더 높습니다.

Controller
@Controller
public class ErrorPageTestController {
    @GetMapping("/error-ex")
    public void errorEx() {
        throw new RuntimeException("에러 발생"); // 서버 오류 -> 오류 코드 500
    }

    @GetMapping("/error-404")
    public void error404(HttpServletResponse response) throws IOException {
        response.sendError(404, "404 오류 발생!");
    }

    @GetMapping("/error-403")
    public void error403(HttpServletResponse response) throws IOException {
        response.sendError(403, "403 오류 발생!");
    }

    @GetMapping("/error-500")
    public void error500(HttpServletResponse response) throws IOException {
        response.sendError(500);
    }
}

 

404 에러코드 발생시 페이지 = 404.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="utf-8">
</head>
<body>
<div class="container" style="max-width: 600px">
  <div class="py-5 text-center">
    <h2>404 오류 화면 스프링 부트 제공</h2>
  </div>
  <div>
    <p>오류 화면 입니다.</p>
  </div>
  <hr class="my-4">
</div> <!-- /container -->
</body>
</html>

 

403 에러코드 발생시 페이지 = 4xx.html

403.html이라는 오류코드 파일이 없기 때문에 400번대 오류 페이지인 4xx.html을 렌더링합니다.

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="utf-8">
</head>
<body>
<div class="container" style="max-width: 600px">
  <div class="py-5 text-center">
    <h2>4xx 오류 화면 스프링 부트 제공</h2>
  </div>
  <div>
    <p>오류 화면 입니다.</p>
  </div>
  <hr class="my-4">
</div> <!-- /container -->
</body>
</html>

 

500 에러코드 발생시 페이지 = 500.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="utf-8">
</head>
<body>
<div class="container" style="max-width: 600px">
  <div class="py-5 text-center">
    <h2>500 오류 화면 스프링 부트 제공</h2>
  </div>
  <div>
    <p>오류 화면 입니다.</p>
  </div>
  <hr class="my-4">
</div> <!-- /container -->
</body>
</html>


  • 스프링에서 API 예외 처리하는 방법 알아 보기
 

[Spring] 스프링에서 API 예외(오류) 처리하기

 

hstory0208.tistory.com