본문 바로가기

웹/spring boot

에러페이지 처리

https://dev-overload.tistory.com/29

 

[Spring] Spring Boot 시작하기 (6) - 에러 페이지 처리

포스팅 시리즈 2020/09/28 - [Dev/Spring] - [Spring] Spring Boot 시작하기 (1) - 프로젝트 생성 2020/09/29 - [Dev/Spring] - [Spring] Spring Boot 시작하기 (2) - Thymeleaf 뷰 템플릿 사용 2020/09/30 - [De..

dev-overload.tistory.com

 

에러페이지의 설정과정

1.application.peroperties 혹은 java로 하는 config 로 설정 정보 수정

 

  application.peroperties 설정 시

  #오류 응답에 exception의 내용을 포함할지 여부

  server.error.include-exception=TRUE

  #오류 응답에 stacktrace 내용을 포함할지 여부(ALWAYS, NEVER, ON_TRACE_PARAM)

  server.error.include-stacktrace=ALWAYS

  #브라우저 요청에 대해 서버 오류시 기본으로 노출할 페이지를 사용할지 여부 server.error.whitelabel.enabled=FALSE

 

2. 컨트롤러 작성

    ErrorController 를 상속받은 경우

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@Controller public class ExceptionHandlingController implements ErrorController { 
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
     // 에러 페이지 url 정의 
    private final String ERROR_404_PAGE_PATH = "/error/404";
    private final String ERROR_500_PAGE_PATH = "/error/500"
    private final String ERROR_ETC_PAGE_PATH = "/error/error";
 
     @RequestMapping(value = "/error"public String handleError(HttpServletRequest request, Model model) { 
    // 에러 코드를 획득한다. 
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); 
        // 에러 코드에 대한 상태 정보 
        HttpStatus httpStatus = HttpStatus.valueOf(Integer.valueOf(status.toString())); 
        if (status != null) { 
            // HttpStatus와 비교해 페이지 분기를 나누기 위한 변수 
            int statusCode = Integer.valueOf(status.toString()); 
            // 로그로 상태값을 기록 및 출력 
            logger.info("httpStatus : " + statusCode); 
            // 404 error 
            if (statusCode == HttpStatus.NOT_FOUND.value()) { 
            // 에러 페이지에 표시할 정보 
            model.addAttribute("code", status.toString()); 
            model.addAttribute("msg", httpStatus.getReasonPhrase()); 
            model.addAttribute("timestamp"new Date()); return ERROR_404_PAGE_PATH; } 
            // 500 error 
            if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) { 
            // 서버에 대한 에러이기 때문에 사용자에게 정보를 제공하지 않는다. 
                return ERROR_500_PAGE_PATH; 
            } 
        } 
        // 정의한 에러 외 모든 에러는 error/error 페이지로 보낸다. 
        return ERROR_ETC_PAGE_PATH; 
    } 
 
    @Override public String getErrorPath() { 
        return "/error"
    } 
}
 
 
cs

 

 

 

3. 에러페이지 작성

 

' > spring boot' 카테고리의 다른 글

@PostConstruct 란?  (0) 2021.10.06
view 부분 구현해보기  (0) 2021.03.25