본문 바로가기
WORKS/Java + JSP + Spring

[JSP] 에러페이지 설정하기 | 404 not found | JSP Error Page

by Jelly 젤리 2022. 2. 14.

에러코드가 발생했을 경우 보여지는 에러페이지를 만들어보자.

 

에러페이지를 직접 경험해보자.

아래는 일반적인 네이버 스포츠 홈페이지이다.

URL에 장난을 좀 치니

 

아래와같은 페이지가 나온다.

이건 네이버측에서 설정해 둔 에러페이지이다.

 

이게 본래는 떠야 하는데!

네이버에서 에러페이지를 설정해두었기 때문에 예쁜 아이가 뜨게 되는 것이다.

 


나만의 페이지에서 에러페이지를 제작해보았다.

 

우선 기본 홈페이지이다.

보이는 모습은 간단한 헤드, 바디로만 이루어진 페이지에 귀여운 아스키코드를 넣어 심심하지 않게만 설정해두었다.

첫 번째, 기본 홈페이지에서는 에러페이지를 지정을 해주어야 한다.

자주 발생하는 404, 500같은 에러를 예를 들어보자.

MyHomePage.jsp에서 해당 에러가 발생하였을 경우 위에서 본 것같은 안예쁜 화면이 나타난다.

그 화면 대신! 지정한 JSP 파일을 보여줄 수 있는 기능이 있다.

 

아래와 같이 페이지 디렉티브 즉 <%@ %> 이 태그 안에 errorPage 속성의 주소를 지정해주면 된다.

<%@ page errorPage = " 에러페이지로 띄우고 싶은 jps 파일.jsp / 혹은 주소" %>

실제 MyHomePage.jsp 코드

<!-- MyHomePage.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page errorPage = "05_assignment_isErrorpage.jsp" %>
<!DOCTYPE html>
<html>

<head>
  
  <title>Jelly</title>  

</head>

<body>
<h2 align="center" > 푸딩코딩의 MyHomePage.jsp입니다.</h2>
<hr>
☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。
<p> 
🍓。・゚♡゚・。🍒。・゚♡゚・。🍓 <br>
  (\(\ <br>
&nbsp;&nbsp;(。・・)σ thx for visiting...! <br> 
 o_(")(") <br>
🍓。・゚♡゚・。🍒。・゚♡゚・。🍓 <br>
 </p>
 <p> 
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| <br>
어이 거기 너 ~! URL에 장난치면 안된다구~! <br>
|_________________|<br>
   ᕱ ᕱ  || <br>
            ( ・ω・ || <br>
            / つΦ 
  </p>
☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。˚✩☁︎︎⋆。


</body>

</html>

 

아래는 MyHomePage에서 설정한 JSP 파일 즉 "05_assignment_isErrorpage.jsp"이다.

에러페이지도 비슷하게 헤드, 바디만 설정해서 아스키코드로 살짝 꾸미고 심심하지 않게 문구만 넣었다.

 

두 번째 단계이다. 에러페이지의 경우, 본인이 에러페이지라는 것을 인식하여야 한다.

그렇게 하기 위해 아래와 같이 에러페이지 jsp파일의 page 디렉티브에 isErrorPage 속성의 값을 true로 설정해준다.

<%@ page isErrorPage = "true" %>

실제 05_assignment_isErrorpage.jsp 코드

<!-- 05_assignment_isErrorpage.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Error!</title>
</head>
<body>
.           ✦             ˚              *                        .              .            ✦              ‍ ‍ ‍ ‍                  ,      <br>
<br>
.             .   ゚      .             .<br>
<br>
      ,       .                                  ☀                                               *         .           .             .                                                                                        ✦        ,         *      🚀        ,    ‍ ‍ ‍ ‍               .            .                                             ˚            ,                                       .                      .             .               *            ✦                                               .                  .           .        .     🌕              .           .              <br>
<br>
 ˚                     ゚     .               .       ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ,                * .                    .           ✦             ˚              *                        .              .

<p align = "center">비정상적인 접근입니다 <br>
다시 시도해주세요 :D <p>
.           ✦             ˚              *                        .              .            ✦              ‍ ‍ ‍ ‍                  ,      <br>
<br>
.             .   ゚      .             .<br>
<br>
      ,       .                                  ☀️                                               *         .           .             .                                                                                        ✦        ,         *      🚀        ,    ‍ ‍ ‍ ‍               .            .                                             ˚            ,                                       .                      .             .               *            ✦                                               .                  .           .        .     🌕              .           .              <br>
<br>
 ˚                     ゚     .               .      🌎 ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ,                * .                    .           ✦             ˚              *                        .              .
</body>
</html>

 

세 번째 단계이다.

바로 xml을 건드려주어야한다!

<web-app>태그 안에서

<error-page></error-page> 태그를 써서 그 속에 에러코드와 위치를 설정해주어 연동해준다.

 

아래는 에러페이지 연동의 기본 형태이다.

<web-app>
	<error-page>
    	<error-code> 404 </error-code>
        <location> /05_assignment_isErrorPage.jsp</location>
    </error-page>
</web-app>

실제 .xml

<?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>06_JSP_actionTag</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>/05_assignment_isErrorPage.jsp</location>
	</error-page>
	
	<error-page>
		<error-code>500</error-code>
		<location>/05_assignment_isErrorPage.jsp</location>
	</error-page>

	<error-page> <!-- exception의 종류를 잡아서 exception 종류별로 실행할 에러페이지 지정 가능 -->
		<exception-type>java.lang.NullPointerException</exception-type>
		<location>/error/errorNullPointer.jsp</location>
	</error-page>
</web-app>

맨 아래 경우는 exception의 종류를 하나씩 잡아서 설정 할 수 있도록 한 예시이다.

 

에러페이지 만들기! 생각보다 어렵지 않았다.

 


 

 

에러페이지를 만들면서 알게 된 점

실제로 네이버 등 대형 회사의 경우 404 not found라든지 오류페이지가 뜨면 항의전화가 오기도 한단다.

그래서 그런 회사일수록 에러페이지를 잘 설정해두어야 하겠구나..! 하게 된 과제였다.

 

또 다른 궁금증으로부터 알게 된 점: 네이버를 예시로 들겠다.

https://www.naver.com/ 이런 식으로 url이 써질 때 / 안에다가 장난을 치면 naver 밖에서 오류가 뜬다.

/ 바깥에다가 장난쳤을 때 뜨는 오류페이지만 naver에서 처리가 되는 것.

 

그리고 /바깥에다가 장난쳤을 때 원래 페이지로 돌아가는 현상?

그건 네이버측에서 오류페이지를 본 페이지 자체로 설정해두는 것이다.

 

또, 그 경우 url에 장난친 부분만 지워지면서 그 페이지로 돌아가는 경우와

url 장난친 부분이 같이 붙어있으면서 그 페이지로 돌아가는 경우

두 가지를 볼 수 있었는데

둘 다 뒤로가기 기능(?) 이라는 게 있을 것이라고 추측된다...

 

 

우선 에러페이지 공부는 여기까지.

추가 할 것이 있거나 수정사항이 있을 경우 다시 업데이트 하겠다.

 

728x90

댓글