상세 컨텐츠

본문 제목

예외 페이지

WebProgramming/JSP

by ChrisMare 2018. 10. 19. 18:03

본문

예외 페이지의 필요성

예외적인 상황이 발생했을 경우 웹컨테이너(서버 톰캣....)에서 제공되는 기본적인 예외 페이지가 보여 진다면, 개발자와 달리 사용자에게는 다소 불쾌한 느낌이 들면서, 다시는 해당 사이트에 접속하려 들지 않을 것이라 생각이 듭니다. 따라서 딱딱한 느낌을 주는 에러 페이지 보다는 양해를 구하는 부드러운 느낌이 드는 페이지로 유도 할 수 있습니다.



page 지시자를 이용한 예외 처리

사용법

예외 발생할 수 있는 페이지에 <%@ page errorPage="사용자정의에러페이지.jsp"%> page지시자를 사용한다.
사용자정의에러페이지.jsp 에서는 이 페이지가 예외발생시 처리하는 페이지라고 명시해주어야한다. ( <%@ page isErrorPage="true"%> )

errorOccurred.jsp

1
<%@ page errorPage="errorHandling.jsp" %>
cs


errorHandling.jsp

1
<%@ page isErrorPage="true" %>
cs

이 처럼 핸들링 페이지에서 isErrorPage="ture"를 설정해야지만 exception 객체를 쓸 수 있다.


Error ex)

errorOccurred.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    
<%@ page errorPage="errorHandling.jsp" %> <!-- 에러발생이 해당페이지로 보내는 지시자  -->
 
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>ErrorOccurred Page</title>
</head>
<body>
<h1>This page is Error Occurred Page.</h1>
 
    <%
        int i = 10/0;    // 에러 발생
    %>
 
</body>
</html>
cs


errorHandling.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    
<%@ page isErrorPage="true" %> <!-- true 설정해야지만 exception 객체를 사용가능하다.  -->
<% response.setStatus(200); %> <!-- 정상적인 페이지라고 명시 (명시안할 시 에러발생) -->
 
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Error Handling 페이지</title>
</head>
<body>
<h1>This page is Error Handling Page.</h1>
<hr>
<h2>죄송합니다. <%= exception.getMessage() %> 문제로 에러가 발생했습니다.</h2>
</body>
</html>
cs



web.xml 파일을 이용한 예외 처리

사용법

web.xml 파일 내에 <error-page> 태그 기술 그 밑에 <error-code> 와 <location> 기술하면 된다.
주의사항 : 해당 에러를 처리하는 페이지에 <% response.setStatus(200); %> 기술해야한다!!!


web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 
id="WebApp_ID" version="4.0">
  <display-name>sessionTest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 
  <error-page>
    <error-code>404</error-code>
    <location>/error/error404.jsp</location> <!-- 현재context에서 error폴더 밑의 error404.jsp파일 -->
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/error/error500.jsp</location> <!-- 현재context에서 error폴더 밑의 error500.jsp파일 -->
  </error-page>

</web-app>
cs


주의 사항 : 이것도 역시 error처리하는 페이지에는 정상적인 페이지라고 명시해주어야한다.


error404.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<% response.setStatus(200); %> <!-- 이 페이지는 정상적인 페이지라고 명시를 꼭 해주어야한다. -->

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>404 Error</title>
</head>
<body>
    <h1>페이지를 못 찾는 것과 같은 맵핑 에러 : 404 Error 입니다.</h1>
</body>
</html>
cs


error505.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<% response.setStatus(200); %> <!-- 이 페이지는 정상적인 페이지라고 명시를 꼭 해주어야한다. -->

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>500 Error</title>
</head>
    <body>
        <h1>사용자 정의 에러 : 500 Error 입니다.</h1>
    </body>
</html>
cs


'WebProgramming > JSP' 카테고리의 다른 글

자바 빈(JAVA Bean)  (0) 2018.10.20
JSP 에러 종류  (0) 2018.10.19
세션(session)  (0) 2018.10.19
쿠키(Cookie)  (0) 2018.10.18
request/response 객체  (0) 2018.10.18

관련글 더보기

댓글 영역