[ View ]/JSP

[ JSP ] 에러 처리

환이s 2023. 3. 6. 13:55
728x90

오늘은 JAVA Bean을 알아보기 전 에러 처리 페이지에 대해서 알아봅시다.

 

 

우리가 흔히 네이버, 구글 등 다양한 웹 페이지에서 검색 등 로그인 시 해당 화면으로 깔끔하게 이동하는 걸 볼 수 있습니다.  하지만 각 웹 사이트마다 에러 발생 시 에러 페이지로 이동시켜서 조치하는 점 알고 계신가요??

 

에러 페이지라고 하면 개발자를 준비하시는 분들이라면 흔하게 보이는 웹 페이지가 있습니다.

그건 바로 

 

 

이렇게 안내를 해주는 오류 페이지가 출력되는 걸 경험할 수 있습니다.

 

만약 실무에서 사용자가 웹 페이지에서 검색 및 로그인 시 이런 웹 페이지가 나오면 당황스럽겠죠??

그렇기 때문에 이번 시간에 에러 처리에 대해서 알아봅시다.


■  에러 처리 개요

 

  • JSP 페이지는 에러 발생 시 웹 브라우저 전체 화면이 에러 메시지로 표시됩니다.
  • 에러가 어떠한 경로로 발생하게 되었는지 스택을 뒤집어서 추적합니다.
  • 에러가 발생하면 개발자를 위해 소스 코드 및 스택 추적 정보가 화면에 노출됩니다.
  • 보안성 향상 및 사이트를 방문하는 사용자들에게 친숙한 안내 화면을 제공합니다.

■  Http 상태 코드

 

그럼 에러 코드의 종류에 대해서 먼저 알아봅시다.

 

에러 코드 의 미 설 명
1xx Informational(정보) 요청을 받고 처리 중에 있음
2xx Success(성공) 요청을 정상적으로 처리함
3xx Redirection(리디렉션) 요청 완료를 위해 추가 동작이 필요함
4xx Client Error(클라이언트 오류) 클라이언트 요청을 처리할 수 없어 오류 발생
5xx Server Error(서버 오류) 서버에서 처리를 하지 못하여 오류 발생

 

<주요 상태코드>

상태 코드 메시지 설 명
200 OK 요청 정상 처리
400 Bad Request 클라이언트의 요청 구문이 잘못됨
401 Unauthorized 요청 처리를 위해 HTTP 인증 정보가 필요함
403 Forbidden 접근 금지 응답.

Directory Listing요청
(서버 파일 디렉토리 표시) 및
관리자 페이지 접근 등을 차단하는 경우의 응답.
(파일 시스템 퍼미션 거부, 허가되지 않은 IP주소를 통한 엑세스의 거부 등)
404 Not Found 클라이언트가 요청한 리소스가 서버에 없음
500 Internal Server Error 서버에서 클라이언트 요청을 처리 중에 에러가 발생함
503 Service Unavailable - 서버가 일시적으로 요청을 처리할 수 없음

- 서버가 과부하 상태이거나 점검중이므로 요청을 처리할 수 없는 상태

 

지금까지 에러 코드에 대해서 알아봤습니다.

그럼 이제 에러 처리를 해봅시다.


■  에러 처리

과거에는 page 디렉티브의 errorPage 속성을 사용하여 에러를 처리했으나, 이 방법은 최근에 나온 웹 컨테이너들은 지원하지 않을 수도 있습니다. 따라서 또 다른 방법인 WEB-INF 폴더web.xml 파일에 에러 엘리먼트를 사용하여 해당 에러 코드 발생 시 에러 페이지가 출력될 수 있게 할 수 있습니다.

 

에러 엘리먼트의 종류는 아래 표를 참고해 봅시다.

 

엘리먼트 설 명
ERROR-PAGE 에러 발생 시 출력할 페이지를 감싸는 상위 태그 입니다.
ERROR-CODE 에러 코드를 지정하는 태그입니다.
LOCATION 해당 에러 코드 발생 시 출력할 페이지의 상대 경로를 지정합니다.

그럼 에러 코드 중 자주 발생하는 404,500 에러를 처리해 봅시다.

 

먼저 web.xml 페이지로 이동합니다.

제 포스팅을 보신 분들은 이전에 서블릿 등록할 때 자주 web.xml에서 코드 작성하는 걸 볼 수 있습니다.

 

서블릿에 대해서 궁금하신 분들은 아래 블로그를 참고해 봅시다.

 

 [ JSP ] 웹 프로그래밍(JSP)의 개요 및 구성 요소

 

[ JSP ] 웹 프로그래밍(JSP)의 개요 및 구성 요소

오늘부터 웹 프로그래밍(JSP) 포스팅을 해보려 합니다. 지금까지 알아본 JAVA, SQL , HTML, JAVAScript를 활용하는 중요한 단계라고 생각합니다. 앞으로 개발자를 준비하시는 분들이라면 꼭 알고 넘어가

drg2524.tistory.com

 

 

web.xml 페이지를 열어보니 저는 서블릿 설정한 두 페이지 정도 보입니다. 

에러 처리를 미리 해두면 프로젝트마다 활용이 가능합니다. 그럼 맨 아래에 코드를 작성해 보겠습니다.

 

 

엘리먼트를 활용해서 404, 500 에러 발생 시 해당 페이지 출력될 수 있게 경로 설정까지 끝냈습니다.

그럼 경로로 설정한 404 code, 500 code.jsp 페이지를 만들어 줍니다.

(해당 에러 페이지는 간단하게 만들겠습니다.)

 

< 404 code >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>404code</title>
<script src="../include/jquery-3.6.3.min.js"></script>
</head>
<body>
<h2>요청하신 주소를 찾을 수 없습니다.</h2>
<p>
잠시 후에 다시한번 시도해 주시기 바랍니다.
동일한 문제가 지속적으로 발생할 경우 고객센터로 문의하여 주십시오.
</body>
</html>

 

< 500 code >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="../include/jquery-3.6.3.min.js"></script>
</head>
<body>
<h2>이용에 불편을 드려 죄송합니다.</h2>
<p>
잠시 후에 다시한번 시도해 주시기 바랍니다.
동일한 문제가 지속적으로 발생할 경우 고객센터로 문의하여 주십시오.
</body>
</html>

정말 간단하게 작성했습니다. 그럼 확인을 위해 에러 발생 페이지를 생성해 봅시다.

 

< error page >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>error</title>
<script src="../include/jquery-3.6.3.min.js"></script>
</head>
<body>
<%
int a= Integer.parseInt(request.getParameter("num"));
// null을 숫자로 바꿀 수 없어서 java.lang.NumberFormatException 
%>
a : <%= a %>

</body>
</html>

위 코드를 보면 a 값을 출력하고 싶은데 값을 따로 부여하지 않고 null 값으로 보내봅니다.  그럼 값이 없기 때문에 500 에러 코드가 발생해야 합니다. 

 

500 에러 코드 발생하면 맨 위의 에러 페이지처럼 코드도 알려주는 페이지가 출력되어야 하지만, 500 에러 코드 페이지를 만들었기 때문에 500 code 페이지가 출력돼서 나옵니다.

 

 


마치며 

 

오늘은 JSP 에러를 처리하는 방법에 대해서 알아보았습니다.

포스팅에서는 정말 간단하게 에러 페이지를 만들어서 출력시켰지만... 실무에서는 에러 페이지도 좀 더 섬세한 작업을 해야겠죠?? 

그럼 다음 포스팅에서 뵙겠습니다.

728x90

'[ View ] > JSP' 카테고리의 다른 글

[ JSP ] JDBC 암호화  (0) 2023.03.08
[ JSP ] JAVA Bean  (0) 2023.03.07
[ JSP ] 액션 태그  (0) 2023.03.05
[ JSP ] model 종류 및 내장 객체 응용  (0) 2023.03.04
[ JSP ] 내장 객체  (2) 2023.03.03