프로그래밍 언어/자바 웹

JSP 페이지 예외 처리 실습

· 코딩마이데이

1. 실습을 위해 WebContent를 아래 test02 폴더를 만들고 add.html, add.jsp, addException.jsp 파일들을 준비합니다.

실습 파일 위치

 

2. add.html을 다음과 같이 작성합니다. 입력창에서 숫자를 입력 받아 action에 지정한 add.jsp로 전송합니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>합계</title>
</head>
<body>
	자연수를 입력하세요.
	<form action="add.jsp">
		1부터 <input type="text" name="num">
		<input type="submit" value="계산하기">
	</form>
</body>
</html>

 

3. add.jsp를 다음과 같이 작성합니다. 페이지 디렉티브 태그의 errorPage 속성에 예외 처리 페이지인 addException.jsp를 지정하여 오류가 발생하면 예외 처리를 합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    errorPage="addException.jsp"%>
<%
	int num = Integer.parseInt(request.getParameter("num"));
	int sum = 0;
	for (int i = 1; i <= num; i++) {
		sum = sum + i;
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>합계 구하기</title>
</head>
<body>
	<h2>합계 구하기</h2>
	<h1>1부터 <%=num %>까지의 합은 <%=sum %>입니다</h1>
</body>
</html>

 

4. 또 다른 JSP 페이지인 addException.jsp를 다음과 같이 작성합니다. 페이지 디렉티브 태그의 isErrorPage 속성을 true로 설정해 exception 내장 객체를 이용해서 발생한 예외를 처리하도록 합니다. 이제 exception 내장 객체는 자바의 Exception 클래스의 인스턴스입니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>에러 페이지</title>
</head>
<body>
	====== toString() 내용 ======
	<h1><%=exception.toString() %></h1>
	========== getMessage() 내용 ==========
	<h1><%=exception.getMessage() %></h1>
	======== printStackTrace() 내용 =======
	<h1><% exception.printStackTrace(); %></h1>
	<h3>
		숫자만 입력 가능합니다. 다시 시도하세요.
		<a href='add.html'>다시 하기</a>
	</h3>
</body>
</html>

 

5. http://localhost:8090/pro12/test02/add.html로 요청하여 입력창에 정상적인 숫자를 입력한 후 계산하기를 클릭합니다.

숫자 입력 후 전송

6. 정상적인 결과가 출력됩니다.

숫자 전송 시 정상적인 결과 출력

 

7. 이번에는 문자를 입력해 볼까요?

문자 입력 후 전송

 

8. 문자는 처리 시 예외가 발생합니다. 다음과 같이 예외 처리 페이지에서 예외를 처리합니다.

문자 전송 시 예외 메시지 출력