0. JSP 페이지의 예외처리
웹 어플리케이션을 개발하고 서비스하다보면 개발자가 예상하지 못한 에러가 발생하는 경우가 있다. 이 때 이 에러를 예외(Exception)라고 한다.
JSP에서는 디렉티브 태그를 사용해 예외처리를 할 수 있다.
<%@ page errorPage="errorPage.jsp"%>
디렉티브 태그에 있는 page 태그의 errorPage 속성은 만약 현재 페이지에서 예외가 발생했을 때 어느 페이지로 이동할지 정해주는 속성이다. 위 코드의 경우 예외가 발생하면 errorPage.jsp라는 페이지로 이동하게 된다.
errorPage.jsp에서는 현재 페이지가 에러를 처리하는 페이지라는 것을 명시해주어야한다. 디렉티브 태그의 page 태그를 사용하는데 이번에는 isErrorPage 속성을 true로 설정하면 된다.
<%@ page isErrorPage="true"%>
isErrorPage 속성을 true로 설정하면 exception 내장 객체를 사용할 수 있다.
exception 객체를 통해 페이지에서 발생한 예외에 대한 정보 등을 확인할 수 있다.
<p>예외 유형 : <%= exception.toString() %></p>
<p>예외 유형 : <%= exception.getClass().getName() %></p>
<p>오류 메시지 : <%= exception.getMessage() %></p>
1. try ~ catch ~ finally
JSP 페이지에서는 스크립틀릿을 통해 Java에서 사용하던 try ~ catch ~ finally 문도 사용할 수 있다.
<%
try{
// 예외가 발생할 수 있는 코드
} catch (Exception e) {
request.getRequestDispatcher("errorPage.jsp").forward(request, response);
}
%>
2. web.xml 설정을 통한 에러 페이지 처리
/WEB-INF/web.xml 파일을 통해서 에러페이지를 설정할 수 있다.
<error-page> 태그를 통해 처리할 상태 코드와 처리할 페이지를 매핑할 수 있다.
<!-- HTTP 상태 코드 중, 에러 코드(404, 500)에 jsp 페이지를 매핑할 수 있다. -->
<error-page>
<!-- 404 : page not found. URL에 해당되는 jsp가 없음 -->
<error-code>404</error-code>
<location>/error/error404.jsp</location>
</error-page>
<error-page>
<!-- 500 : internal server error. 내부 서버 오류 (프로그래밍 오류) -->
<error-code>500</error-code>
<location>/error/error500.jsp</location>
</error-page>
error-page : 상태 코드와 처리 페이지를 매핑
error-code : 처리할 상태 코드 (오류 코드)
location : 해당 상태 코드가 발생했을 때 이동(처리)할 페이지
web.xml의 error-page 태그를 사용한 예외처리는 특정 상태 코드를 한꺼번에 처리할 수 있기 때문에 유용하다. 하지만 예외처리의 우선 순위는 디렉티브 태그의 errorPage 설정이 더 높기 때문에 web.xml을 예외처리를 사용하고자 한다면 페이지의 errorPage 설정은 지워야한다.
* 예외 클래스에 따른 예외처리
HTTP 상태 코드 뿐만 아니라 발생한 예외 클래스에 따라서 예외처리 페이지를 매핑할 수 있다.
이 경우에는 <error-code> 태그 대신에 <exception-type> 태그를 사용하면 된다.
<exception-type> 태그에는 처리할 예외 클래스 이름을 적어주면 된다.
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/error/errorNullPointer.jsp</location>
</error-page>
* 예외처리의 우선순위
디렉티브 태그 (errorPage) > web.xml (error_page) > try ~ catch
'JSP' 카테고리의 다른 글
| JSTL을 사용해 HTML 태그 삽입하기 (0) | 2023.01.17 |
|---|---|
| 필터 (0) | 2023.01.16 |
| 다국어 처리 - 버튼을 이용한 언어 변경 구현 (0) | 2023.01.11 |
| fmt를 이용한 여러 방법의 다국어 처리 (0) | 2023.01.11 |
| JSTL Fmt를 이용한 다국어 처리 (0) | 2023.01.11 |