https://dev-overload.tistory.com/29
에러페이지의 설정과정
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 |