반응형
정적 오류 페이지를 보여주고 싶다면, 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' 카테고리의 다른 글
[Spring] 스프링에서 API 예외(오류) 처리하기 (@ExceptionHandler, @ControllerAdvice) (0) | 2023.04.27 |
---|---|
[Spring] 스프링 부트 - 요청 타입변환(Converter), 포맷터(Formatter) (0) | 2023.04.26 |
[Spring] @Transactional 옵션 알아보기 + 트랜잭션 전파 (0) | 2023.04.26 |
[Spring] 트랜잭션 AOP 주의 사항 (0) | 2023.04.25 |
[Spring] Bean Validation - 유효성 검증 (0) | 2023.04.06 |