1. JSP 오류페이지
JSP 페이지를 실행하다보면 종종 실행 중 오류가 발생한다.
사용자 입장에서는 500이나 404오류가 나타나면 사이트의 신뢰도가 떨어지고 큰 문제가 발생한 것으로 인식을 할 수 있다.
따라서 프로그램 실행 시 예외나 오류가 발생할 경우 이를 안내하는 페이지를 만들 수 있다.
JSP 페이지 예외 처리 과정
예외 처리 JSP를 만든 후 디렉티브 태그 속성 중 isErrorPage 속성을 true로 설정
일반 JSP 페이지의 디렉티브 태그 속성 중 errorPage 속성을 예외 처리 페이지 이름으로 지정
add.jsp에서 예외가 발생할 경우 예외를 처리하는 과정이다.
addException.jsp에서 exception 내장 객체를 사용해 예외 처리를 한다.
2. JSP 페이지 예외 처리 실습
add.html
<!DOCTYPE html>
<html>
<head>
<title>합계</title>
</head>
<body>
자연수를 입력하세요.
<form action="add.jsp">
1부터 <input type="text" name="num">
<input type="submit" value="계산하기">
</form>
</body>
</html>
입력창에서 숫자를 입력 받아 action에 지정한 add.jsp로 전송
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 = sum + i;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>합계 구하기</title>
</head>
<body>
<h2>합계 구하기</h2>
<h1>1부터 <%= num %>까지의 합은 <%= sum %>입니다.</h1>
</body>
</html>
페이지 디렉티브 태그의 errorPage 속성에 예외 처리 페이지인 addException.jsp를 지정하여 오류가 발생하면 예외 처리를 한다.
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>
숫자만 입력 가능합니다. 다시 시도하세요.
<a href='add.html'>다시 하기</a>
</h3>
</body>
</html>
페이지 디렉티브 태그의 isErrorPage 속성을 true로 설정해 exception 내장 객체를 이용해서 발생한 예외를 처리하도록 한다. 이때 exception 내장 객체는 자바의 Exception클래스의 인스턴스이다.
3. web.xml에서 xml로 각각의 에러 코드에 대한 예외 처리 페이지를 지정하는 방법
web.xml
<error-page>
<error-code>오류코드</error-code>
<location>오류 페이지 위치</location>
</error-page>
web.xml에 오류 페이지를 지정하는 실습
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>
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>
<img src="../image/pic1.png"/><br>
<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>
존재하지 않는 newjeans.jsp를 요청
실행중 예외를 발생시키는 number.jsp 요청
4. Eclipse에서 WEB-INF에 web.xml이 없을때 생성방법
프로젝트 마우스 오른쪽 클릭
Java EE Tools > Generate Deployment Descriptor Stub
참고 : ⌜자바 웹을 다루는 기술⌟ 책을 공부하며 요약・정리한 내용입니다.
'💻 Web_Back end > JSP' 카테고리의 다른 글
자바 코드를 없애는 액션태그 (0) | 2023.05.01 |
---|---|
JSP welcome 파일 지정하기 (0) | 2023.04.30 |
JSP 스크립트 요소 기능 (0) | 2023.04.27 |
JSP 정의와 구성요소 (0) | 2023.04.27 |
페이지 모듈화와 요청 흐름 제어 (0) | 2023.04.07 |