오류 화면 제공
서블릿 컨테이너가 제공하는 기본 화면은 고객 친화적이지 않다.
404, 500, 혹은 그 외의 에러에 대해 표시할 페이지를 지정할 수 있다.
오류 페이지는 예외를 다룰 때 그 자식 타입의 오류를 함꼐 처리한다.
ex. RuntimeException + 그의 자식
매핑된 url에 대해 처리할 컨트롤러를 만든다.
스프링 부트가 뜰 때 WebServerCustomizer를 보고 톰캣에 에러 페이지를 등록한다.
ServletExController에 매핑된 주소를 호출해 예외가 발생한다.
예외를 서블릿까지 전달한다.
WAS가 등록된 에러 페이지를 다시 호출한다.
작동 원리
서블릿은 예외나 sendError()가 호출되었을 때 설정된 오류 페이지를 찾는다.
WAS는 해당 예외를 처리할 수 있는 오류 페이지 정보를 확인한다.
오류 페이지 요청 흐름
WAS에 예외가 전파되면 오류 페이지를 다시 요청해서 필터, 서블릿, 인터셉터, 컨트롤러 등 모든 과정을 거친다.
웹 브라우저(클라이언트)는 서버 내부에서 이런 일이 일어나는지 전혀 모른다.
오직 서버 내부에서 일어나는 일이다.
오류 정보 추가
WAS는 단순 오류 페이지 요청 말고도 오류 정보를 request의 attribute에 추가해서 넘겨준다. 필요하다면 오류 페이지에서 사용 가능하다.
request.attribute에 서버가 담아준 정보가 잘 출력되었다.
Last updated