page 디렉티브 태그 errorPage
<%@ page errorPage="에러페이지.jsp" %>
exception의 자바 내장 객체를 사용해주기 위해선 페이지에서
<%@ page isErrorPage="true" %>
를 설정해줘야함
errorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page errorPage="errorPage_error.jsp" %>
<!-- page 디렉티브. errorPage속성의 값으로 jsp페이지를 넣음
JSP 페이지로 실행되는 도중 오류 발생 시 오류 페이지 호출
-->
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<!-- parameter name값이 없다면 오류 발생 (null을 대문자로 변환불가능) -->
<p>name 파라미터 : <%=request.getParameter("name").toUpperCase() %></p>
</body>
</html>
errorPage_error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page isErrorPage="true" %>
<!-- isErrorPage 속성 : 현재 JSP 페이지를 오류 페이지로 호출하는 page 디렉티브 태그의 속성
이때 오류 페이지에서 exception 내장 객체를 사용할 수 있음 -->
<!DOCTYPE html>
<html>
<head>
<title>Exception</title>
</head>
<body>
<p><img src="/images/error.png"></p>
<!-- exception 객체 : JSP에서 기본적으로 제공해주는 오류 처리용 기본 내장 객체
오류 이벤트의 toString()를 호출하여 간단한 오류 메세지 확인 -->
<p>예외 유형 : <%=exception.toString() %></p>
<!-- 오류 메세지의 발생 근원지를 찾아 단계별로 오류를 출력 -->
<p>단계별 오류 출력 : <%=exception.printStackTrace() %></p>
<!-- 예외 객체 타입을 출력 -->
<p>예외 객체 타입 : <%=exception.getClass().getName() %></p>
<!-- 오류 이벤트와 함께 들어오는 메세지 출력 -->
<p>오류 메세지 : <%=exception.getMessage() %></p>
</body>
</html>
예외 처리 예제 - 나눗셈
exception.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="exception_process.jsp" method="post">
<p>숫자1 : <input type="text" name="num1"></p>
<p>숫자2 : <input type="text" name="num2"></p>
<p><input type="submit" value="나누기"></p>
</form>
</body>
</html>
exception_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page errorPage="exception_error.jsp" %>
<!-- 본 페이지에서 오류 발생 시 exception_error.jsp에서 오류를 대신 처리 -->
<!DOCTYPE html>
<html>
<head>
<title>Exception</title>
</head>
<body>
<%
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
double res = num1/num2;
%>
<p><%=num1 %> / <%=num2 %> = <%=res %></p>
</body>
</html>
exception_error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page isErrorPage="true" %>
<!-- isErrorPage 속성 : 현재 JSP 페이지를 오류 페이지로 호출하는 page 디렉티브 태그의 속성
이때 오류 페이지에서 exception 내장 객체를 사용할 수 있음 -->
<!DOCTYPE html>
<html>
<head>
<title>Exception</title>
</head>
<body>
<p><img src="/images/error.png"></p>
<p>예외 : <%=exception %></p>
<p>toString : <%=exception.toString() %></p>
</body>
</html>
주요 오류 코드 종류
- 200 : 요청이 정상적으로 처리됨
- 307 : 임시로 페이지가 리다이렉트 됨
- 400 : 클라이언트의 요청이 잘못된 구문으로 구성됨
- 401 : 접근이 허용되지 않음
- 404 : 지정된 URL을 처리하기 위한 자원이 존재하지 않음
- 405 : 요청된 메소드가 허용되지 않음
- 500 : 서버 내부 오류(JSP에서 예외 발생)
- 503 : 서버 과부하나 보수 중인 경우. 서버가 일시적으로 서비시를 제공할 수 없음
오류 코드 설정
- 오류 코드 : 웹 서버가 제공하는 기본 오류 페이지에 나타나는 404, 500과 같이
사용자의 요청이 올바르지 않을 때 출력되는 코드. 응답 상태 코드. - JSP페이지에서 발생하는 오류가 web.xml 파일에 설정된 오류 코드와 일치하는
경우 오류 코드와 오류 페이지를 보여줌
web.xml에서 errorPage 처리하는 법
<error-page>
<error-code>404</error-code> <!-- 오류 코드 -->
<!-- 오류 페이지 설정 -->
<location>/error/error404.jsp</location> <!-- 오류 처리 페이지 -->
<error-page>
<error-code>403</error-code>
<!-- 오류 페이지 설정 (접근권한 없음) -->
<location>/error/error403.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<!-- 오류 페이지 설정 (개발자의 오류, 잘못된 코드를 실행)
우선순위
jsp페이지의 page디렉티브의 errorPage > web.xml의 error-code
-->
<location>/error/error500.jsp</location>
</error-page>
<!--
[2] 예외 유형에 따른 오류 페이지 호출 방법은 JSP 페이지가 발생시키는 오류가 web.xml 파일에
설정된 예외 유형과 일치하는 경우 예외 유형과 오류 페이지를 보여줌
우선순위
jsp페이지의 page디렉티브의 errorPage > web.xml의 error-code
-->
<error-page>
<!-- 자바 예외 유형의 정규화된 클래스 이름을 설정 -->
<exception-type>java.lang.NullPointerException</exception-type>
<location>/error/errorNullPointer.jsp</location>
</error-page>
'JAVA > JSP' 카테고리의 다른 글
[JSP] 필터 (0) | 2024.07.15 |
---|---|
[JSP] 구현7 - 예외 처리 (0) | 2024.07.12 |
[JSP] 구현6 - 시큐리티 (0) | 2024.07.11 |
[JSP] 시큐리티(security) (0) | 2024.07.10 |
[Python] SPA 형태의 CRUD (0) | 2024.07.10 |