JSP는 page 속성을 사용하여 각 JSP 페이지마다 에러 페이지(Error Page)를 지정할 수 있는 기능을 제공합니다. 페이지 실행 중 예외(Exception)가 발생하면, JSP 컨테이너가 자동으로 지정된 에러 페이지를 호출하여 처리합니다.
에러 페이지 지정하기
다음은 main.jsp 파일에 에러 페이지를 지정하는 예제입니다. 에러 페이지를 설정하려면 <%@ page errorPage = "xxx" %> 디렉티브를 사용합니다.
<%@ page errorPage = "ShowError.jsp" %>
<html>
<head>
<title>Error Handling Example</title>
</head>
<body>
<%
// 에러 페이지를 호출하기 위해 의도적으로 예외를 발생시킵니다.
int x = 1;
if (x == 1) {
throw new RuntimeException("Error condition!!!");
}
%>
</body>
</html>에러 처리 페이지 작성하기
이제 실제 에러를 처리할 JSP 페이지인 ShowError.jsp를 작성해 보겠습니다.
주목할 점은 에러 처리 페이지에 <%@ page isErrorPage = "true" %> 디렉티브가 포함되어 있다는 것입니다. 이 디렉티브를 선언하면 JSP 컴파일러가 exception이라는 내장 객체(인스턴스 변수)를 자동으로 생성해 주므로, 해당 페이지 내에서 발생한 예외 정보에 접근할 수 있습니다.
<%@ page isErrorPage = "true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<p>죄송합니다. 오류가 발생했습니다.</p>
<p>예외 스택 트레이스는 다음과 같습니다:</p>
<pre><% exception.printStackTrace(response.getWriter()); %></pre>
</body>
</html>실행 결과 확인
브라우저에서 main.jsp에 접속하면, 코드에서 의도적으로 발생시킨 RuntimeException으로 인해 에러 페이지가 호출되며 다음과 유사한 출력 결과를 확인할 수 있습니다.
java.lang.RuntimeException: Error condition!!! ...... Opps... Sorry, an error occurred. Here is the exception stack trace:
핵심 정리
- errorPage 속성: 예외 발생 시 이동할 에러 페이지를 지정합니다.
- isErrorPage 속성: 해당 JSP가 에러 처리 페이지임을 선언하며,
exception내장 객체 사용을 가능하게 합니다. - 이 두 디렉티브를 조합하면 사용자에게 친화적인 오류 화면을 제공하고, 예외 정보를 별도 페이지에서 체계적으로 관리할 수 있습니다.