SpringBoot · intelliJ · OracleDB · Thymeleaf
이러한 에러가 발생할 경우, 직접 만든 에러페이지를 보여줄 수 있도록 설정해보았다.
1.에러컨트롤러 생성
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
@Controller
public class ErrorHandler implements ErrorController {
// @Override
// public String getErrorPath() {
// return null;
// }
@GetMapping("/error")
public String handleError(HttpServletRequest request) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
// error로 들어온 에러의 status를 불러온다 (ex:404,500,403...)
if(status != null){
int statusCode = Integer.valueOf(status.toString());
if(statusCode == HttpStatus.NOT_FOUND.value()) {
return "404";
} else {
return "error";
}
}
return "error";
}
}
―
컨트롤러를 생성하고, ErrorContorller 인터페이스를 상속(implements)받는다.
―
getErrorPath () 메서드를 재정의하여 오류 발생시 호출 할 사용자 지정 경로(에러페이지)를 지정합니다.
그러나 버전 SpringBoot 2.3.x부터 이 방법을 사용하지 않으며 대신 properties에서
server.error.path 속성(/error)을 사용하여 사용자 지정 경로(에러페이지)를 지정하도록 한다고 한다.
server.error.path= /error
―
request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE) 는
/error로 들어온 에러의 status를 불러온다. (ex: 404, 500, 403 ...)
기본적으로 제일 많이 사용되는 404에러는 404에러페이지로, 이외 나머지 에러는 기본 에러페이지로 이동하도록 했다.
―
toString 메서드
객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드
Integer.valueOf()
ValueOf() 메서드는 파라미터로 숫자로 변환할 문자열을 입력받고, 참조형인 new Integer(정수)로 변환합니다.
2. 에러시 보여줄 error.html과 404.html을 만들어 준다.
참고사이트: [SpringBoot] 간단하게 에러페이지 설정하기 (tistory.com)
HTTP 상태코드
100 번대 상태코드
100 ----> 데이터의 일부를 서버가 받은 상태(처리중인 상태)
200 번대 상태코드 : 정상적인 처리 후 응답
200 ----> OK 에러없이 정상처리
204 ----> 정상처리 되었으나, 서버에 보낼 데이터가 없음
300 번대(다른 URL 처리)
301: 요청한 URL이 새로 변경되었음.
304: 기존의 데이터와 변경된것이 없음
400번대
400: 요청에 문제가 있기때문에 서버에서 인식할 수 없음
403: 서버에서 허락되지않음
404: 요청 URL을 찾을 수 없음
406: 전송 방식이 허락되지 않음(REST방식에서 자주 나타나는 상태코드)
500번대
500: 서버에서 처리시 문제가 발생(프로그램 내부적인 오류)
502: 게이트웨이, 프록시 상태의 문제(과부하)
503: 일시적인 서비스 중단 상태
504: 지정된 처리시간이 지나서 처리되지 못하는 경우
출처: https://dydals5678.tistory.com/2 [아빠개발자의 노트:티스토리]
'Follow Work > SpringbootBoard' 카테고리의 다른 글
[Springboot] 게시글 업로드한 파일 수정하기[41] (0) | 2022.10.14 |
---|---|
[Springboot] 이전글 다음글 없을 시 클릭 막기 [39] (0) | 2022.10.14 |
[Springboot] 게시글 파일 업로드 -2 [38] (4) | 2022.10.14 |
[HTML CSS] 반응형 테이블 디자인 (0) | 2022.10.14 |
[HTML] iframe 유튜브 동영상 자동 연속재생 (14) | 2022.10.06 |