[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에 정의를 한 상태로 페이지 지시자에도 정의를 하면 페이지 지시자가 우선적으로 작동하게 됩니다.
샘플 예제는 대충 만들었지만 에러페이지를 이쁘게 만들어서 유저들을 안심시킬 수 있도록 하면 좋겠네요!
'Java&JSP&Spring > JSP&Servlet' 카테고리의 다른 글
[JAVA/JSP/Servlet]JSP세션 (0) | 2022.03.06 |
---|---|
[JAVA/JSP/Servlet]JSP쿠키 (0) | 2022.02.26 |
[JAVA/JSP/Servlet]JSP액션태그(foward, include, param) (0) | 2022.02.26 |
[JAVA/JSP/Servlet]JSP내부 객체(response) (0) | 2022.02.19 |
[JAVA/JSP/Servlet]JSP내부 객체(request) (0) | 2022.02.19 |