Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

David의 블로그

[JSP/Servlet] Custom Error페이지 만들기1 본문

프로그래밍/Jsp_Servlet

[JSP/Servlet] Custom Error페이지 만들기1

David 리 2023. 12. 2. 11:01

전에는 CustomException하는 방법을 공부 해 봤다.

https://78alswo.tistory.com/9

 

[JSP/Servlet]Custom Exception 만들어보기

자바 혹은 JSP 웹 프로그래밍을 공부하거나 프로젝트를 하면서 많은 Exception을 접하곤한다. 특히나 개발을 하다보면 100% 완벽한 코딩은 없기에 버그나 오류를 접하는게 당연하다고 생각한다. 이

78alswo.tistory.com

 

 

이번시간은 실무에서 에러코드, 익셉션 타입에 맞게 

에러페이지를 작성해 보도록 하겠다.

 

실제 실무에서는 에러가 나면 톰캣(WAS)에서 보여주는 화면을 그대로 보여주지 않는다.

가령 404에러페이지 라든가....등등

이유는 단순하다. 

1. 간혹 소스 코드가 에러 화면에 노출될 경우가 있어, 보안 측면에서 좋지않다.

2. 개발자에게는 어떤 에러가 났는지 보기 편하지만, 클라이언트(사용자)에 있어서는 신뢰가 가지 않는다.

따라서, 

에러코드, 익셉션 타입별로 에러페이지를 등록 해주는 것이다.

 

 

1. page 디렉티브 속성을 이용한 에러페이지 등록방법

2. web.xml error코드별로 에러페이지 등록방법.

3. web.xml Exception 타입별로 에러페이지 등록방법.

3가지를 알아보도록 하겠다.

 

 

[1. page 디렉티브를 속성을 이용한 에러페이지 등록]

[readParameter.jsp]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- readParameter.jsp에서 익셉션이 발생했을 때, 보여줄 화면명. 
     JSP는 에러 화면 대신 지정한 JSP페이지를 보여줄 수 있다. 
     page 디렉티브의 errorPage속성을 이용한다. --%> 
<%@ page errorPage="/error/viewErrorMessage.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>파라미터 출력</title>
</head>
<body>
    name 파라미터 값 : <%=request.getParameter("name").toUpperCase() %>
</body>
</html>
cs

 

테스트 해 볼 메인jsp다.

3 ~ 6Line : 메인 JSP페이지에서 에러페이지(viewErrorMessage.jsp)를 쓰기위해 page 디렉티브 속성 errorPage를 사용한다.

14Line : URL요청할 때 name값을 받도록 지정을 했다. 만약 URL요청시 name값이 없다면 null관련 Exception이 발생 할 것이다.

 

[error/viewErrorMessage.jsp]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- 익셉션 발생 시, 에러페이지로 등록한 화면을 사용하기 위해서 page디렉티브 속성의 isErrorPage 값을 'true'로 설정을 꼭 해야한다. --%>    
<%@ page isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>에러발생</title>
</head>
<body>
    요청 처리 과정에서 에러가 발생하였습니다.<br>
    빠른 시간 내에 문제를 해결하도록 하겠습니다.
    <p>
    <%-- page 디렉티브의 isErrorPage 속성값을 'true'로 지정하면, JSP페이지는 에러페이지가 되고,
         에러페이지로 지정된 JSP는 exception 기본객체를 쓸 수 있다. --%>
    에러 타입 : <%=exception.getClass().getName() %><br>
    에러 메시지 : <b><%=exception.getMessage() %></b>
</body>
</html>
<%-- 만약 에러 페이지의 길이가 512 바이트보다 작다면,
인터넷 익스플로러는 이 페이지가 출력하는 에러 페이지를 출력하지 않고
자체적으로 제공하는 'HTTP 오류 메시지' 화면을 출력한다.
인터넷 익스플로러에서도 에러 페이지 내용을 올바르게 출력하려면
응답 결과에 이 주석과 같은 내용을 포함시켜서
에러 데이터가 512 바이트를 넘도록 해야 한다.
-->--%>
 
cs

메인jsp에서 사용 할 에러페이지jsp이다.

3 ~ 4Line : 에러페이지를 사용하기 위해서는 반드시 page 디렉티스 속성 isErrorPage를 'true'로 설정을 해야 한다.

15 ~ 18Line : exception 객체.4Line에 isErrorPage를 'true'로 지정했다면, exception 기본 객체를 쓸 수 있다. 

21 ~ 27Line : 브라우저마다 에러 발생 시, WAS에서 제공하는 에러 화면을 보여주는데, 

                      IE는 에러페이지의 길이가 512Byte보다 작다면, 자체적으로 제공하는 화면을 출력한다.

                      Custom한 에러페이지를 보여주고 싶다면, 이 라인처럼 주석을 통해 길이를 맞추면 된다.

                      (지금은 IE서비스 종료가 되어 사용할 일은 없겠다. 그냥 한번 넣어보았다.)

 

 

 

 

다음은 결과화면을 보도록 하겠다.

exception 기본객체를 이용하여

에러타입은 무엇인지, 에러 메시지는 무엇인지 확면에서 확인해 볼 수 있다.

 

 

URL에 name값을 정상적으로 받아왔을 경우.

 

 

 

 

다음에는

web.xml error코드별로 에러페이지 등록방법을 알아보겠다.