JSP의 에러 처리
1. 각 페이지 별 에러 처리
페이지 지시어 태그로
에러 발생시 출력할 페이지 주소를 설정한다.
<%@ page errorPage = "예외발생시출력할문서주소지정" %>
예외 발생시 출력할 문서를 작성할 때에는,
<%@ page isErrorPage = "true" %>
isErrorPage 속성을 true 로 작성해야만 에러시 내용이 출력된다.
Exception 기본 객체 : 발생한 예외 객체
exception.getMessage(): 예외 메시지
exception.printStackTrace() : 예외 추적 메시지 설정
다음과 같은 내용의 문서를 실행하면 500번 오류가 발생한다.
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head><title>파라미터 출력</title></head>
<body>
name 파라미터 값: <%= request.getParameter("name").toUpperCase() %>
</body>
</html>
에러 처리를 하지 않았을 때 출력되는 에러 페이지이다.
자세히 읽어보면 어디에서 발생한 것인지 나타난다.
name 값을 가져와 출력해야 하는데, 가져올 name값이 없기 때문이다.
문서 상단에 다음과 같은 코드를 추가한다.
// <%@ page contentType = "text/html; charset=utf-8" %> 하단에 아래 예외처리 코드 추가 ↓↓↓
<%@ page errorPage = "/error/viewErrorMessage.jsp" %>
500번 에러 발생시 viewErrorMessage.jsp 의 내용이 출력된다는 내용의 코드인데,
viewErrorMessage.jsp의 내용은 다음과 같다.
이때, 뷰에러메시지 상단의 코드가 true 여야 제대로 실행된다.
코드를 추가한 문서를 실행시키면 다음과 같은 에러 페이지가 출력된다.
2. web.xml 파일에 에러 코드별 등록
발생하는 코드 별로 출력할 내용이 달라진다.
이 파일은 위치가 정해져 있는데,
프로젝트 폴더 내의 WEB-INF 폴더에 web.xml 로 저장해야 한다.
기존의 내용을 임의로 바꿔서도 안된다. 제대로 동작을 하지 않을 수도 있다.
기존 코드 사이에 코드별로 발생할 에러 내용을 붙여넣는다.
그러면 에러별로 발생하는 내용이 달라진다.
물론 저 파일들이 만들어져 있어야 한다.