티스토리 뷰

JSP

[JSP]예외 처리

dev23 2024. 8. 14. 19:27
반응형

- 프로그램 실행 예외나 오류가 발생할 경우 이를 안내하는 페이지, 전용 예외 처리 페이지가 나타나게 하여

신뢰 있고 사용자 친화적인 페이지를 만들 있다.

 

JSP 페이지 예외 처리 과정

 1. 예외 처리 JSP 만든 디렉티브 태그 속성 isErrorPage 속성을 true로 설정한다.

<%@ page isErrorPage='true' %>

 

 2. 일반 JSP 페이지 디렉티브 태그 속성 errorPage 속성을 예외 처리 페이지 이름으로 지정한다.

<%@ page errorPage='addException.jsp' %>

 

예외 처리 페이지 예

 - add.jsp에서 예외가 발생할 경우 예외를 처리한다.

 - addException.jsp에서 exception 내장 객체를 이용해 예외를 처리한다.

 

* add.html

<!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>

 

* add.jsp

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

* addException.jsp

<%@ 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() 내용 =======<br>
	<h1><%=exception.toString() %></h1>
	
	======= getMessage() 내용 =======<br>
	<h1><%=exception.getMessage() %></h1>
	
	======= printStackTrace() 내용 =======<br>
	<h1><% exception.printStackTrace(); %></h1>
	
	<h3>숫자만 입력가능합니다. 다시 시도하세요.</h3>
	<a href='add.html'>다시 하기</a>
</body>
</html>

 

- 코드 작성 후 /add.html 페이지에 자연수를 입력하고 [계산하기] 버튼을 클릭한다.

 

자연수 입력

 

- 정상적으로 계산이 되는 경우 다음과 같이 1부터 입력한 수까지의 합을 출력한다.

정상 출력

 

- 이제 수가 아닌 문자를 입력하고 [계산하기] 버튼을 눌러 본다.

문자 입력

 

- 수가 아닌 문자 입력 시 다음과 같이 에러 페이지가 나타난다.

 

에러 페이지

 

JSP 오류 페이지 종류

- 404 오류 : 요청한 JSP 페이지가 없을 발생하는 오류

- 500 오류 : 컨테이너에서 JSP페이지 처리 중에 오류가 발생할 표시되는 오류

- 전체 JSP 페이지에 대해 발생하는 오류에 따라 화면에 표시되는 각각의 예외 처리 JSP 페이지를 적용할 있다.

 

에러 코드에 따른 예외 페이지 지정

- web.xml에서 각각의 에러 코드에 대한 예외 처리 페이지를 지정할 있다.

  <error-page>
  	<error-code>에러코드</error-code>
  	<location>오류 페이지 위치</location>
  </error-page>

 

* WebContent/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <error-page>
  	<error-code>404</error-code>
  	<location>/err/error_404.jsp</location>
  </error-page>
  <error-page>
  	<error-code>500</error-code>
  	<location>/err/error_500.jsp</location>
  </error-page>
</web-app>

 

* err/error_404.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>404 예외 처리 페이지</title>
</head>
<body>
	<h1>요청한 페이지는 존재하지 않습니다.</h1>
</body>
</html>

 

* err/error_500.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>500 예외 처리 페이지</title>
</head>
<body>
	<h1>죄송합니다. 서비스 실행 중 오류가 발생했습니다.</h1>
	<h1>잠시 후 다시 시도해 보세요.</h1>
</body>
</html>

 

* number.jsp

- 브라우저 요청 시 예외를 발생시키는 페이지다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// 예외 강제 발생
	int num = Integer.parseInt(request.getParameter("num"));
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>예외 발생</title>
</head>
<body>
	<h1>JSP입니다.</h1>
</body>
</html>

 

- 코드 작성 후 먼저, 없는 페이지의 주소를 입력해 본다.

404 - 없는 페이지에 접근 시도 시

 

- 다음은 예외를 발생시키는 페이지에 접근해 본다.

오류가 발생한 페이지에 접근 시

 

- 위 페이지에 오류가 발생한 이유는 페이지 접근 시 "num" 값을 받아야 하는데, num 값이 존재하지 않아 파싱 에러가 발생해 오류 페이지가 출력됐다. 

- 해당 페이지에 접근할 때 /number.jsp?num=1 과 같이 num을 같이 넘겨 주면 오류가 발생하지 않는다.

반응형

'JSP' 카테고리의 다른 글

[JSP]액션태그  (0) 2024.08.14
[JSP]Welcome 파일 지정  (0) 2024.08.14
[JSP]내장 객체  (0) 2024.08.14
[JSP]스크립트 요소 사용 예  (0) 2024.08.14
[JSP]스크립트 요소(선언문, 스크립틀릿, 표현식, 주석문)  (0) 2024.08.13
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함