본문 바로가기

Java&JSP&Spring/JSP&Servlet

[JAVA/JSP/Servlet]예외페이지 표시하기

[JAVA/JSP/Servlet]JSP세션

안녕하세요 미나라이입니다.

이번에는 JSP에서 에러가 났을때 예외페이지를 표시하는 방법에 대해서 포스팅 하려고 합니다.

프로젝트 환경

OS : Windows 10

IDE : Eclipse 2020-06 (4.16.0)

Java : 8

Jdk Version : 1.8.0_161

WAS : Tomcat 8.5.73

 

예외페이지를 표시하는 이유는 흔히 웹사이트를 보다보면 아래와 같은 페이지로 이동되는 경우가 있죠?

이런 페이지가 나오면 유저 입장에서는 당황하거나 해당 웹 사이트가 아예 안되는 줄 알고 이용을 안하게 되는 경우가 생깁니다.

 

유저들을 당황시키지 않기 위해서 무슨 에러가 났는지 어째서 문제가 생겼는지 명시를 해 주어야 할 때가 있습니다.

그럴때를 대비해서 예외페이지 처리를 합니다.

 

예외페이지를 설정하는 방법은 2가지가 있는데요 한번 사용법에 대해서 알아보도록 합시다.

 

1. 지시자 태그를 사용하는 방법

해당 JSP상단에 에러가 났을때 페이지 지시자를 이용해서 에러페이지로 이동시킬 수 있습니다.

에러를 강제로 발생 시켜보겠습니다.

지금 10을 0으로 나누고 있기 때문에 에러가 발생합니다.

MainPage.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page errorPage="ErrPage.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		int i = 10/0;
	%>
</body>
</html>

에러가 발생했을때 에러페이지로 이동이 되는지를 확인 해 봅시다.

ErrPage.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page isErrorPage="true" %>
<%--브라우저에서 에러로 셋팅하는 경우가 있어서 정상 페이지로 명시 --%>
<% response.setStatus(200); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>ErrorPage</title>
</head>
<body>
<h1>ErrorPage</h1>
<h2><%=exception.getStackTrace() %></h2>
<h2><%=exception.getMessage() %></h2>
</body>
</html>

주소를 보면 MainPage.jsp지만 에러가 발생했기 때문에 화면에 표시되는 내용은

ErrPage.jsp인것을 확인 할 수 있습니다.

 

2. web.xml에 정의하는 방법

에러 처리를 처리하는 방법으로 web.xml을 이용하는 방법이 있습니다.

해당 방법이 페이지 지시자를 이용하는 것보다 깔끔하게 처리 가능한 것 같다고 개인적으로 생각합니다.

web.xml

  <error-page>
  	<error-code>404</error-code>
  	<location>/Err404.jsp</location>
  </error-page>
    <error-page>
  	<error-code>500</error-code>
  	<location>/Err500.jsp</location>
  </error-page>

브라우저의 Status가 404일때는 Err404.jsp페이지로 이동하고

Status가 500일때는 Err500.jsp페이지로 이동합니다.

Err404.jsp

Err404페이지로 이동하는 방법은 존재한지 않는 페이지로 들어가면 됩니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>404Page</title>
</head>
<body>
	<h1>404 ErrPage</h1>
	<h2>페이지 주소를 찾을 수 없습니다.</h2>
</body>
</html>

에러페이지

Err500.jsp

Err500.jsp페이지로 이동하는 방법은 Java의 연산에러를 발생시키면 이동하게 됩니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>500Page</title>
</head>
<body>
	<h1>500 ErrPage</h1>
	<h2><%=exception.getStackTrace()%></h2>
	<h2><%=exception.getMessage()%></h2>
</body>
</html>

MainPage2.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		int i = 10/0;
	%>
</body>
</html>

에러 페이지

여기서 주의할점은 web.xml에 정의를 한 상태로 페이지 지시자에도 정의를 하면 페이지 지시자가 우선적으로 작동하게 됩니다.

 

샘플 예제는 대충 만들었지만 에러페이지를 이쁘게 만들어서 유저들을 안심시킬 수 있도록 하면 좋겠네요!

728x90
반응형