[JSP] 예외처리

Whatever·2022년 1월 18일
0

JSP

목록 보기
18/30

1. 프로그램이 처리되는 동안 특정한 문제가 발생 시 처리를 중단하고 다른 처리를 하는 것(오류 처리)

2. Page 디렉티브를 이용

  • errorPage 속성으로 오류 페이지 호출
    <%@ page errorPage="오류 페이지 URL"%>
  • isErrorPage 속성으로 오류 페이지 만듦(나는 오류 페이지야)
    <%@ page isErrorPage="true" %>

3. web.xml

  • web.xml 파일을 통해 오류 상태(404, 500, 널오류)와 오류 페이지를 보여줌
 <error-page>
 	<error-code>오류 코드</error-code>
 	<location>오류 페이지 URI</location>
 </error-page> 
 <error-page>
 	<exception-type>예외 유형</exception>
    <location>오류 페이지의 URI</location>
 </error-page>

4. try-catch-finally

try{

}catch(처리할 예외 유형 설정){
	예외처리문
}finally{
	예외와 상관없이 무조건 실행(생략 가능)
}

페이지 없을 때 예외처리

exceptionNoPage.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<title>페이지 오류</title>
<link rel="stylesheet" href="/css/bootstrap.min.css" />
</head>
<body>
	<!-- top 인클루드 시작 -->
	<jsp:include page="/ch03/top.jsp" />
	<!-- top 인클루드 끝 -->
	
	<div class="jumbotron">
		<div class="container">
			<h2 class="alert alert-danger">요청하신 페이지를 찾을 수 없습니다.</h2>
		</div>
	</div>
	
	<div class="container">
		<p><%=request.getRequestURL()%></p><!-- 오류페이지를 출력 -->
		<p>
			<a href="/ch04/product.jsp" class="btn btn-secondary">
			상품목록&raquo;	
			</a>
		</p>
	</div>
	
	<!-- bottom 인클루드 시작 -->
	<jsp:include page="/ch03/bottom.jsp" />
	<!-- bottom 인클루드 끝 -->
</body>
</html>

파라미터 없을 때 오류처리

exceptionNoProductId.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<title>상품 아이디 오류</title>
<link rel="stylesheet" href="/css/bootstrap.min.css" />
</head>
<body>
	<!-- top 인클루드 시작 -->
	<jsp:include page="/ch03/top.jsp" />
	<!-- top 인클루드 끝 -->
	
	<div class="jumbotron">
		<div class="container">
			<h2 class="alert alert-danger">해당 상품이 존재하지 않습니다.</h2>
		</div>
	</div>
	<!-- 
	request.getRequestURL() : 오류 발생 시 해당 오류 페이지 경로를 출력
					http://localhost:8090/ch04/addProduct.jsp
	request.getQueryString() : 요청 파라미터(productId=P1234)
	결과 : http://localhost:8090/ch04/product.jsp?productId=P1234
	 -->
	<div class="container">
		<p><%=request.getRequestURL()%></p><!-- 오류페이지를 출력 -->
		<p>
			<a href="/ch04/product.jsp" class="btn btn-secondary">
			상품목록&raquo;	
			</a>
		</p>
	</div>
	
	<!-- bottom 인클루드 시작 -->
	<jsp:include page="/ch03/bottom.jsp" />
	<!-- bottom 인클루드 끝 -->
</body>
</html>

0개의 댓글