JSP는 page 속성을 이용해 각 JSP마다 오류 페이지(Error Page)를 지정할 수 있는 기능을 제공합니다. 페이지 실행 중 예외(Exception)가 발생하면 JSP 컨테이너가 자동으로 해당 오류 페이지를 호출하므로, 별도의 try-catch 처리 없이도 일관된 에러 화면을 사용자에게 보여줄 수 있습니다.
1. 오류 페이지 지정하기
다음은 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>위 코드에서는 조건이 참일 때 RuntimeException을 강제로 발생시켜, 지정된 오류 페이지(ShowError.jsp)가 호출되도록 합니다.
2. 오류 처리 페이지 작성하기
이제 실제 오류를 표시할 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>3. 실행 결과 확인하기
main.jsp에 접속하면 다음과 유사한 출력 결과를 확인할 수 있습니다.
java.lang.RuntimeException: Error condition!!! ...... Opps... Sorry, an error occurred. Here is the exception stack trace:
핵심 정리
- errorPage 디렉티브: 예외 발생 시 이동할 오류 페이지를 지정합니다.
- isErrorPage 디렉티브: 해당 JSP가 오류 처리 페이지임을 선언하며,
exception객체 사용을 가능하게 합니다. - 예외가 발생하면 JSP 컨테이너가 자동으로 오류 페이지로 전환하므로, 여러 페이지에서 하나의 공통 오류 페이지를 재사용할 수 있습니다.