Mafa Dev
6. Spring Boot에 에러 페이지 설정하기 본문
Spring Boot로 서버를 구현한 경우, 없는 페이지에 접근했을때 기본적으로 아래와 같이 화이트라벨(Whitelabel) 오류 페이지를 볼 수 있다.
기본적으로 제공해주는 페이지를 그대로 써도 되지만 커스텀한 페이지를 제공하기 위한 방법을 가이드 한다.
기존과 같이 templates폴더에 404.html 파일을 위치시켜도 되지만, error page는 401, 404, 500등 다수의 에러페이지를 생성해야 하므로 아래와 같이 errors라는 폴더를 생성후 해당 경로로 404.html을 위치 시켰다.
(마찬가지로 다른 401, 500 커스텀페이지를 해당 경로에 위치시키면 된다.)
이후 class를 하나 생성 후 implements ErrorController를 해주고 @RequestMapping을 통해 /error api를 맵핑 시켜주면 된다. 스프링부트가 자동으로 구성한 기본 오류 핸들러는 /error를 먼저 찾고 없다면 Whitelabel를 제공해주기 때문이다.
구현한 Error.java의 소스코드는 아래와 같다.
package com.practice12022.mafaspringboot2;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
@Controller
public class Error implements ErrorController {
private String ERROR_TEMPLATES_PATH = "/errors/";
@RequestMapping(value = "/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_TEMPLATES_PATH + "404";
}
if(statusCode == HttpStatus.FORBIDDEN.value()){
return ERROR_TEMPLATES_PATH + "500";
}
}
return "error";
}
}
이후 서버를 구동시켜보면 ERROR_STATUS_CODE가 404일때 아래와 같이 정상적으로 에러 페이지를 출력한다.
'WEB > Spring Boot' 카테고리의 다른 글
7. Fetch API () 사용하기 (0) | 2022.08.09 |
---|---|
5. Spring Boot에 BootStrap 적용하기 (0) | 2021.12.02 |
4. Spring Boot API 연동하기 (0) | 2021.12.02 |
3. Spring Boot Project 생성 (Hello World) (0) | 2021.12.01 |
2. IntelliJ 설치 방법 (0) | 2021.11.30 |