에러 페이지 설정

  • Java Web Programming에서는 예외가 발생하면 WAS가 가지고 있는 예외 페이지를 보여지도록 설정되어 있습니다.

    WAS의 예외 페이지를 사용자에게 보여주는 것은 바람직한 처리 방법이 아닙니다.
    개발자는 예외 코드를 읽을 수 있지만 사용자는 예외 코드를 읽지 못하기 때문입니다.
    별도의 예외 페이지를 만들어서 출력합니다.

1.에러가 났을 때 보여지는 페이지 생성

  • 페이지 상단에 아래 코드를 추가하면 exception 객체를 이용할 수 있습니다.
<%@ page isErrorPage="true" %>

2.jsp 페이지에서 예외가 발생했을 때 출력될 예외 페이지 설정

<%@ page errorPage ="/에러 페이지 경로" @>

3.실습

1) index.html 에 에러 페이지 출력을 위한 링크를 설정

<a href="./error/input.jsp">에러 출력을 위한 입력 페이지</a><br />

2) WebContent 디렉토리에 error 디렉토리를 만들고 input.jsp 파일을 만들고 작성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>입력 페이지</title>
</head>
<body>
    <form action="./process.jsp">
        수1 <input type="text" name="su1" /><br />
        수2 <input type="text" name="su2" /><br />
        <input type="submit" value="전송" />
    </form>
</body>
</html>

3) process.jsp 파일을 만들고 작성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        //입력한 파라미터 읽기
        String su1 = request.getParameter("su1");
        String su2 = request.getParameter("su2");
        int result = Integer.parseInt(su1) + Integer.parseInt(su2);
        out.println("<p>더한 결과:" + result + "</p>");
    %>
</body>
</html>

4) 실행을 해서 정수를 입력하면 아무런 문제가 없지만 문자열이나 실수를 입력하면 예외가 발생

4.에러 코드

100번대 : 요청 중
200번대 : 정상적인 응답이 발생한 경우
300번대 : 리다이렉트 중
400번대 : 클라이언트 오류
500번대 : 서버 오류

5.실습 : process.jsp 에서 예외가 발생하는 경우 직접 만든 예외 페이지를 출력

1) 예외가 발생했을 때 보여질 예외 페이지를 생성 - errordisp.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 이 페이지에서는 exception 객체를 사용할 수 있게 됩니다. -->
<%@ page isErrorPage="true" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>예외 페이지</title>
</head>
<body>
    <%
        out.println("<h3>문제가 발생했습니다. 빠른 시일내에 복구하겠습니다.</h3>");
    %>
</body>
</html>

2) process.jsp 페이지에서 예외가 생기면 errordisp.jsp 파일을 출력하도록 설정을 추가

<!-- 예외가 발생했을 때 보여질 페이지 설정 -->
<%@ page errorPage = "./errordisp.jsp" %>

6.IE에서의 에러 페이지

  • IE에서는 에러 페이지의 출력 내용이 512 byte가 안되면 자신의 에러 페이지를 출력
  • 에러 페이지의 내용이 512 byte가 안되면 주석을 추가해서 512 byte가 넘도록 만들어야 IE에서도 동일한 에러 페이지가 출력됩니다.
<%-- <!-- 아무 내용 --> --%>

7.web.xml 을 이용한 에러 페이지 설정

  • 모든 페이지에 에러 페이지를 직접 설정하는 것은 자원의 낭비

1) 에러 코드 별 에러 페이지 설정

<error-page>
    <error-code>에러 코드</error-code>
    <location>/에러페이지 위치</location>
</error-page>
  • 설정한 에러 코드에 해당하는 에러가 발생하면 location에 설정한 페이지가 출력

2) 예외 별 에러 페이지 설정

<error-page>
    <exception-type>예외클래스 이름</exception-type>
    <location>/에러페이지 위치</location>
</error-page>

8.권장 사항

  • 별도로 보여져야 하는 에러 페이지가 있다면 jsp 페이지에 직접 설정
  • 404 나 500 번 오류는 web.xml을 이용해서 설정

results matching ""

    No results matching ""