JSP/Servlet 웹 애플리케이션에서 web.xml 활용한 에러 페이지 설정

JSP/Servlet 웹 애플리케이션에서 web.xml 활용한 에러 페이지 설정

이 글에서는 JSP/Servlet 기반의 웹 애플리케이션에서 web.xml 파일을 활용하여 에러 페이지를 설정하는 방법에 대해 알아봅니다. 다양한 HTTP 상태 코드에 대해 사용자에게 친화적인 에러 메시지를 표시하는 방법에 대해 알아봅니다.

1. web.xml 파일의 역할

web.xml 파일은 웹 애플리케이션의 설정 정보를 담고 있는 디스크립터 파일입니다. 이 파일을 통해 서블릿, 필터, 리스너 등을 설정할 수 있으며, 특정 에러가 발생했을 때 사용자에게 보여줄 에러 페이지를 정의할 수 있습니다.

2. 에러 페이지 설정하기

먼저, web.xml 파일에 통합 에러 페이지를 설정합니다. 모든 오류 코드를 하나의 error.jsp로 처리하도록 설정합니다.

<error-page>
    <error-code>404</error-code>
    <location>/error.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error.jsp</location>
</error-page>

위 설정에서 404, 500 등의 특정 오류 코드는 물론, 모든 예외(java.lang.Exception)에 대해서도 error.jsp 페이지로 이동하도록 설정했습니다.

web.xml 에러 페이지 설정 화면

3. error.jsp 페이지 작성

이제 error.jsp 페이지에서 상태 코드를 읽어 다양한 오류 메시지를 표시할 수 있도록 코드를 작성합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true" %>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>에러 페이지</title>
</head>
<body>
    <h1>오류 발생</h1>

    <%
        // 오류 코드와 오류 메시지를 읽어온다.
        Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
        String errorMessage = (String) request.getAttribute("javax.servlet.error.message");

        if (statusCode != null) {
            out.println("<p>오류 코드: " + statusCode + "</p>");
            out.println("<p>오류 메시지: " + errorMessage + "</p>");

            // 상태 코드에 따라 다른 메시지 출력
            if (statusCode == 404) {
                out.println("<p>페이지를 찾을 수 없습니다.</p>");
            } else if (statusCode == 500) {
                out.println("<p>서버 내부 오류가 발생했습니다.</p>");
            } else {
                out.println("<p>예기치 않은 오류가 발생했습니다.</p>");
            }
        } else {
            out.println("<p>알 수 없는 오류가 발생했습니다.</p>");
        }
    %>

    <p><a href="/">홈으로 돌아가기</a></p>
</body>
</html>

이 코드에서는 request.getAttribute("javax.servlet.error.status_code")를 사용하여 오류 상태 코드를 가져오고, 이를 기반으로 적절한 메시지를 출력합니다. isErrorPage="true" 지시어를 사용하여 이 페이지가 에러 페이지임을 명시하고, request 객체를 통해 오류 정보를 가져옵니다.

404 오류인 경우 실행 결과 화면

☞ 이러한 설정을 통해 다양한 오류 코드에 대해 하나의 JSP 파일에서 에러를 처리할 수 있습니다. web.xml 설정과 error.jsp 페이지를 잘 조합하면, 웹 애플리케이션에서 발생할 수 있는 여러 오류에 대해 효율적으로 대응할 수 있습니다.

관련 이전 게시글

위로 스크롤