티스토리 뷰
- 프로그램 실행 시 예외나 오류가 발생할 경우 이를 안내하는 페이지, 즉 전용 예외 처리 페이지가 나타나게 하여 좀 더
신뢰 있고 사용자 친화적인 웹 페이지를 만들 수 있다.
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>
- 코드 작성 후 먼저, 없는 페이지의 주소를 입력해 본다.
- 다음은 예외를 발생시키는 페이지에 접근해 본다.
- 위 페이지에 오류가 발생한 이유는 페이지 접근 시 "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
- FMT
- JSP
- javaserverpage
- Binding
- Redux
- Java Server Page
- 내장객체
- 리액트
- el
- Network
- HTML
- 네트워크
- 스프링
- 서블릿
- script element
- 세션
- Session
- Servlet
- 미들웨어
- nodejs
- 서브넷팅
- 제이쿼리
- httpServletRequest
- CSS 속성
- a 태그
- react
- html css
- CSS
- Spring MVC
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |