#에러 처리(pageContext, 응답코드, 타입) 하는 방법
#JSP는 실행 도중 익셉션이 발생할 때 같은 에러 화면 대신 지정한 JSP 페이지를 보여 줄 수 있는 기능을 제공한다.
#예외처리의 목적
-프로그램의 정상적인 종료를 유도한다.
#PageContext 에러 처리
-jsp페이지 별로 에러페이지 지정
#에러 페이지(try)
<%@= errorPage="" %>
-예외 발생시 어떤 페이지를 보여줄 것인지 지정할 수 있다.
#에러처리 페이지(catch)
<%@ page isErrorPage = "true" %>
-isErroPage = true : 에러페이지로 허락한다.
#exception객체
(전달받은 예외객체를 표현하는 객체) <-기본객체(isErrorPage="true")일때만 사용이 가능하다. (필수가 아니다)
exception객체를 사용할때만 isErrorPage="true"를 지정한다.
exception.getClass().getName()
: Reflection(반사)
1. 에러 페이지(readParameter.jsp)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page errorPage ="/viewErrorMsg.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>파라미터 출력</title>
</head>
<body>
<!-- name존재하지 않아서 NullPointerException 발생 -->
name 파라미터 값 : <%= request.getParameter("name").toUpperCase() %>
</body>
</html>
2. 에러 처리 페이지(viewErrorMsg.jsp)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page isErrorPage = "true" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>에러 발생</title>
</head>
<body>
요청 처리 과정에서 에러가 발생하였습니다.<br/>
빠른 시간 내에 문제를 해결하도록 하겠습니다.
<p>
에러 타입 :<%= exception.getClass().getName() %><br>
에러 메시지: <b><%= exception.getMessage() %></b>
</body>
</html>
-결과 화면
#인터넷 익스플로러에서는 다르게 처리해야한다.
-응답의 상태 코드가 400, 404나 500에러코드이고
에러페이지가 512바이트보다 작으면 자체에러페이지를 보여준다.
#응답 타입별로 에러 페이지 지정하기(web.xml)
-웹 어플리케이션 전체영역
-응답코드로 처리해서 isErrorPage가 필요없다.
<error-page>
<error-code>404</error-code>
<location>/error/error404.jsp</location>
</error-page>
#주요 응답상태 코드
응답 코드 | 설명 |
200 | 요청을 정상적으로 처리한다 |
307 | 임시로 페이지를 리다이렉트한다 |
400 | 클라이언트의 요청이 잘못된 구문으로 구성된다 |
401 | 접근을 허용하지 않는다 |
404 | 요청한 URL을 처리하기 위한 자원이 존재하지 않는다 |
405 | 요청한 메서드(GET, POST, HEAD 등의 전송방식)를 허용하지 않는다 |
500 | 서버 내부 에러가 발생한다 (예를 들어, JSP에서 익셉션이 발생한다.) |
503 | 서버가 일시적으로 서비스를 제공할 수 없다 |
#익셉션 타입별로 에러 페이지 지정하기(web.xml)
<error-page>
<exception-type>java.lang.NullPointException</exception-type>
<location>/error/errorNullPointer.jsp</location>
</error-page>
#에러페이지 우선 순위
#1순위 page디렉티브
#2순위 타입 > 응답
#3순위 응답
#아무것도 없으면 자체 페이지가 나온다.
#버퍼와 에러페이지의 관계
문제
-첫번째 버퍼가 플러시되면 헤더를 수정할수 없다. (정상수행된것처럼 넘어간다)
해결
-버퍼가 플러시 된 이후에 익셉션이 발생하면 에러 페이지가 원하는 형태로 출력되지 않는다.
따라서, 익셉션이 발생하기 전에 버퍼가 플러시 될 가능성이 있다면 버퍼 크기를 늘려서 에러가 발생하기 전에 버퍼가 플러시 되지 않도록 해야한다.
'IT > JSP' 카테고리의 다른 글
[JSP] - 23. <jsp:param> 액션 태그 사용법 (0) | 2020.07.25 |
---|---|
[JSP] - 22. <jsp:include> 액션태그 사용법 (0) | 2020.07.24 |
[JSP] - 20. 기본 객체의 속성(Attribute) - pageContext, request, session, application (0) | 2020.07.23 |
[JSP] - 19. 기본 객체와 영역(scope) - 2 (0) | 2020.07.23 |
[JSP] - 18. application - 파일 읽는 방법(기본 객체 사용) (0) | 2020.07.22 |
댓글