에러 페이지 설정
- 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을 이용해서 설정