[JSP] 6.3 에러 코드별 에러 페이지 작성하기

2022. 4. 8. 13:07JAVA/Servlet&JSP

WEB-INF/web.xml

    
    <error-page>
    	<error-code>404</error-code>
    	<location>/Chapter06/error/error404.jsp</location>
    </error-page>
    
    <error-page>
    	<error-code>500</error-code>
    	<location>/Chapter06/error/error500.jsp</location>
    </error-page>
</web-app>
  • 웹 어플리케이션 폴더 기준 : webapps

error/error404.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    	/*응답 코드를 200으로 지정한다. 이렇게 응답 코드를 200으로 지정하지 않으면
    	  웹 브라우저에는 404 응답 코드가 전달되며, 이 경우 웹 브라우저는 자체적으로
    	  404 에러일 때 보여주는 화면을 출력한다. 따라서 error404.jsp의 출력
    	  결과가 웹 브라우저에 그대로 출력되도록 하기 위해서는 응답 코드를 200으로 지정해
    	  주어야 한다.(SC_OK의 값이 200이다.)
    	  이 경우는 톰캣의 경우에 해당하며 사용하는 웹 콘테이너에 따라서 이렇게 안 해 줘도
    	  원하는 결과가 출력되기도 한다.*/
    	response.setStatus(HttpServletResponse.SC_OK);
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>404 에러 발생</title>
</head>
<body>
<b>요청한 페이지는 존재하지 않습니다.</b>
</body>
</html>

error/500.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    <%
    	/*응답 코드를 200으로 지정한다. 이렇게 응답 코드를 200으로 지정하지 않으면
    	  웹 브라우저에는 404 응답 코드가 전달되며, 이 경우 웹 브라우저는 자체적으로
    	  404 에러일 때 보여주는 화면을 출력한다. 따라서 error404.jsp의 출력
    	  결과가 웹 브라우저에 그대로 출력되도록 하기 위해서는 응답 코드를 200으로 지정해
    	  주어야 한다.(SC_OK의 값이 200이다.)
    	  이 경우는 톰캣의 경우에 해당하며 사용하는 웹 콘테이너에 따라서 이렇게 안 해 줘도
    	  원하는 결과가 출력되기도 한다.*/
    	response.setStatus(HttpServletResponse.SC_OK);
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>500 에러 발생</title>
</head>
<body>
<b>요청 처리 과정에서 예외가 발생했습니다.</b>
<br>
빠른 시간 내에 문제를 해결하도록 하겠습니다.
</body>
</html>

 

에러 페이지가 출력되도록 URL 접속

http://localhost:8080/jsp2/Chapter06/noPage.jsp - 404 에러 발생
http://localhost:8080/jsp2/Chapter06/error/viewErrorMessage.jsp - 500에러 발생

References

source code : https://github.com/yonghwankim-dev/JSP2.0/tree/master/jsp2/src/main/webapp/Chapter06
JSP 2.0 프로그래밍 기초부터 중급까지