예외가 발생하게 되면??
웹 어플리케이션 내에서의 별도의 처리가 없다면, 서블릿 밖으로 까지 예외가 전달
즉, Controller에서 발생한 예외가 톰캣 같은 Web Application Server까지 예외가 전달 된다는 뜻.
톰캣은 톰캣이 기본적으로 제공하는 오류 페이지를 제공할 것 입니다!
많이 보셔봤을 법한 이런 화면 이죠..(화나는 화면..)
이렇게 기본적으로 제공되는 화면은 사용자가 보기에는 무슨 의미인가 싶기도 하고 다방면에서 불편할 것입니다.
그러므로 사용자들에게 보여질 이쁜 오류 페이지를 제공 해야합니다.
ErrorPage errorPage = new ErrorPage(HttpStatus.NOT_FOUND, "/error/404");
일부러 예외 및 오류를 터뜨려서 결과를 보도록 하죠!
Controller
@Controller
public class ServletExceptionController {
@GetMapping("/error-404")
public void error404(HttpServletResponse response) throws IOException{
response.sendError(404,"404 오류");
}
@GetMapping("/error-400")
public void error400(HttpServletResponse response) throws IOException{
response.sendError(400,"400 오류");
}
}
4xx.html
<!DOCTYPE HTML>
<html >
<head>
<meta charset="utf-8">
</head>
<body>
<div >
<div >
<h2>4xx 오류 화면</h2>
</div>
<div>
<p>오류 화면 입니다. 나중에 이쁘게 꾸며요~</p>
</div>
</div>
</body>
</html>
404.html
<!DOCTYPE HTML>
<html >
<head>
<meta charset="utf-8">
</head>
<body>
<div >
<div >
<h2>404</h2>
</div>
<div>
<p>오류 화면 입니다. 나중에 이쁘게 꾸며요~</p>
</div>
</div>
</body>
</html>
실행 결과
http://localhost:8080/error-404 (404.html이 나와야함)
http://localhost:8080/error-400 (에러에 맞는 구체적인 페이지가 없으니 4xx.html페이지가 나와야 함)
요청
오류 페이지 처리를 잘 하는 것을 확인 했습니다!!
이 글은 인프런 김영한님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 수강하고 작성합니다.
출처:https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard