JSP - chapter05
🌍파라미터가 없을 경우 오류 처리
<에러 페이지 처리>
- 우선 순위 1)
-page 디렉티브의 errorPage 속성 사용(전용 에러 처리)
- 우선 순위 2)
-web.xml 파일의 < exception-type > (범용 에러 처리
- 우선 순위 3)
-web.xml 파일의 < error-code > (별도 에러 처리)
- 우선 순위 4)
-아무것도 안했을 때는 웹 컨테이너가 제공하는 기본 에러 페이지 보여줌
🌍error code
- 200 : 요청을 정상적으로 처리함
- 307 : 임시로 페이지를 리다이렉트함
- 400 : 클라이언트의 요청이 잘못됨
- 401 : 접근 허용 안함
- 404 : 요청한 URL 경로 없음
- 504 : 요청 메서드(GET, POST 등)를 허용하지 않음
- 500 : JSP 익셉션 발생
- 503 : 서버가 일시적으로 서비스 제공 못함(서버 부상, 임시 보수중)
🌍errorPage 속성 사용(1)
중요!!★
에러 페이지에 해당하는 JSP 페이지의 page 디렉티브에 isErrorPage="true"를 꼭 해줘야 함
-page 디렉티브의 errorPage 속성 사용(전용 에러 처리)
-web.xml 파일의 < exception-type > (범용 에러 처리
-web.xml 파일의 < error-code > (별도 에러 처리)
-아무것도 안했을 때는 웹 컨테이너가 제공하는 기본 에러 페이지 보여줌
- 200 : 요청을 정상적으로 처리함
- 307 : 임시로 페이지를 리다이렉트함
- 400 : 클라이언트의 요청이 잘못됨
- 401 : 접근 허용 안함
- 404 : 요청한 URL 경로 없음
- 504 : 요청 메서드(GET, POST 등)를 허용하지 않음
- 500 : JSP 익셉션 발생
- 503 : 서버가 일시적으로 서비스 제공 못함(서버 부상, 임시 보수중)
🌍errorPage 속성 사용(1)
중요!!★
에러 페이지에 해당하는 JSP 페이지의 page 디렉티브에 isErrorPage="true"를 꼭 해줘야 함
중요!!★
에러 페이지에 해당하는 JSP 페이지의 page 디렉티브에 isErrorPage="true"를 꼭 해줘야 함
1) readParameterNoErrorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page errorPage="/error/viewErrorMessage.jsp" %>
<!--
JSP는 실행 도중 exception이 발생 시
오류 화면 대신 지정한 JSP페이지를 보여줄 수 있음.
-->
<!DOCTYPE html>
<html>
<head>
<title>파라미터 출력</title>
</head>
<body>
<!--
name 파라미터가 없으면 request.getParameter("name")은 null을 리턴하므로
실행도중 문제가 생겨 NullPointerException을 발생시킴
500에러 : 코드문제
404에러 : 페이지 없음(URL잘못 입력하거나, 페이지 안만듬)
-->
name 파라미터 값 :
<%
// try{
request.getParameter("name").toUpperCase();
// }catch(Exception ex){
// out.print("name 파라미터가 올바르지 않습니다.");
// }
%>
</body>
</html>
2) viewErrorMessage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page isErrorPage="true" %>
<!--
에러 페이지에 해당하는 JSP페이지는 page 디렉티브의
isErrorPage 속성의 기본값을 true로 지정해야함
-->
<!DOCTYPE html>
<html>
<head>
<title>오류 발생</title>
</head>
<body>
<!-- isErrorPage="true"를 하면 exception 기본 객체를 사용할 수 있음 -->
오류가 발생했습니다. <br>
빠른 시간 내에 문제를 해결하도록 하겠습니다.<br>
<!-- exception 기본 객체의 클래스 이름을 출력함 -->
오류 타입 : <%=exception.getClass().getName() %><br>
<!-- 오류 메시지를 출력 -->
오류 메시지 : <%=exception.getMessage() %><br>
</body>
</html>
🌍errorPage 속성 사용(2)
1) noParameterError.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page errorPage="/error/noParamEx.jsp"%>
<!DOCTYPE html>
<html>
<head>
<title>파라미터가 없는 오류가 발생함</title>
</head>
<body>
<%
/*
- /error/noParamEx.jsp를 생성하여 오류를 처리해보자
- noParamEx.jsp에는 적당한 오류 이미지를 넣어보자.
- 이미지는 chapter06 폴더에 넣은 후 <img>태그로 처리해 보자
*/
String memId = request.getParameter("memId").toUpperCase();
String memName = request.getParameter("memName").toUpperCase();
%>
</body>
</html>
2) noParamEx.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<title>파라미터 없음, 이미지 처리</title>
</head>
<body>
오류 발생 <br>
<%
if("java.lang.NullPointerException".equals(exception.getClass().getName())){
%>
오류타입 : <%=exception.getClass().getName() %><br>
오류메시지 : <%=exception.getMessage() %><br><br>
<img alt="image" src="nullpointException.png">
<%
}
%>
</body>
</html>
파라미터가 없기 때문에 errorPage에 적힌 noParamEx.jsp의 페이지가 보여짐
🌍web.xml에 exception-type 사용
1) web.xml에 지정
2) noParameterWeb.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>파라미터 없는 오류 처리(web.xml)</title>
</head>
<body>
<%
String memId = request.getParameter("memId").toString();
%>
</body>
</html>
3) errorNullPointer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>NULL 에러 발생</title>
</head>
<body>
<img alt="null" src="/error/null.png" />
<!--
만약 에러 페이지의 길이가 512바이트보다 작으면,
인터넷 익스플로러는 이 페이지가 출력하는 에러 페이지를 출력하지 않고
자체적으로 제공하는 HTTP 오류 메시지 화면을 출력함.
인터넷 익스플로러에서도 에러 페이지 내용을 올바르게 출력하려면
응답 결과에 이 주석과 같은 내용을 포함해서
에러 데이터가 512 바이트를 넘도록 해야 함.
-->
</body>
</html>
- 파라미터가 없기 때문에 null 에러 남
page 디렉티브의 errorPage가 없기 때문에 web.xml의 exception-type이 실행 됨 => errorNullPointer.jsp의 화면이 출력됨
- 인터넷 익스플로러의 경우, 에러 페이지의 길이가 512바이트보다 작으면 자체적으로 제공하는 HTTP 오류 메시지 화면을 출력함
🌍web.xml의 error-code 사용
1) web.xml에 지정
2) error404.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>요청 페이지 없음</title>
</head>
<body>
404오류가 발생했습니다.
<br>
<img alt="404" src="/error/404error.jpg">
<!--
만약 에러 페이지의 길이가 512바이트보다 작으면,
인터넷 익스플로러는 이 페이지가 출력하는 에러 페이지를 출력하지 않고
자체적으로 제공하는 HTTP 오류 메시지 화면을 출력함.
인터넷 익스플로러에서도 에러 페이지 내용을 올바르게 출력하려면
응답 결과에 이 주석과 같은 내용을 포함해서
에러 데이터가 512 바이트를 넘도록 해야 함.
-->
</body>
</html>
- 페이지 경로를 a.jsp로 했을 경우(a.jsp 존재하지 않음)
3) error500.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>JSP에서 에러 발생</title>
</head>
<body>
500오류가 발생<br>
<img alt="500" src="/error/500error.png">
<!--
만약 에러 페이지의 길이가 512바이트보다 작으면,
인터넷 익스플로러는 이 페이지가 출력하는 에러 페이지를 출력하지 않고
자체적으로 제공하는 HTTP 오류 메시지 화면을 출력함.
인터넷 익스플로러에서도 에러 페이지 내용을 올바르게 출력하려면
응답 결과에 이 주석과 같은 내용을 포함해서
에러 데이터가 512 바이트를 넘도록 해야 함.
-->
</body>
</html>
- body 안에 <%= r%> 이라고 작성하여 익셉션을 발생 시킨 경우
Author And Source
이 문제에 관하여(JSP - chapter05), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rkdwltn5/JSP-chapter051저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)