본문 바로가기
Java/Servlet & JSP

JSP) error page - exception 발생 예외/status 발생 예외

by 박채니 2022. 6. 27.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


에러페이지

- Exception이 발생한 예외

- 404 등 단순 status로 발생하는 에러

 


Exception이 발생한 예외

web.xml

  <error-page>
  	<exception-type>java.lang.Exception</exception-type>
  	<location>/WEB-INF/views/common/error.jsp</location>
  </error-page>

 

error.jsp

isErrorPage="true"

- 발생한 예외 객체에 선언없이 접근 가능

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<%
	// page 지시어 isErrorPage="true"로 지정한 경우
	// 발생한 예외 객체에 선언없이 접근 가능
	String msg = exception.getMessage();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>오류</title>
<style>
body {text-align: center;}
h1 {font-size: 500px; margin:0}
.err-msg {color: red;}
</style>
</head>
<body>
	<h1>헉</h1>
	<p class="err-msg"><%=msg %></p>
	<hr />
	<a href="<%=request.getContextPath()%>">홈으로</a>
</body>
</html>

일부로 Dao 상의 컬럼명에 오타를 내고 로그인 시도를 해보았습니다.

tomcat이 던지는 오류 페이지가 아닌 직접 생성한 오류 페이지가 나오는 것을 확인할 수 있습니다.


status로 발생하는 에러

web.xml

  <error-page>
  	<error-code>404</error-code>
  	<location>/WEB-INF/views/common/404.jsp</location>
  </error-page>

 

404.jsp

- isErrorPage="true" 생략 가능

- error code로 넘어온 경우 exception 객체는 null

- response의 getStatus()메소드로 status code를 가져올 순 있음

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<%
	// page 지시어 isErrorPage="true"로 지정한 경우
	// 발생한 예외 객체에 선언없이 접근 가능
	// error code로 넘어온 경우 exception 객체는 null!
	// String msg = exception.getMessage();
	int statusCode = response.getStatus();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>오류</title>
<style>
body {text-align: center;}
h1 {font-size: 500px; margin:0}
.err-msg {color: red;}
</style>
</head>
<body>
	<h1>텅</h1>
	<p class="err-msg">찾으시는 페이지가 없습니다.</p>
	<hr />
	<a href="<%=request.getContextPath()%>">홈으로</a>
	<br />
	<a href="javascript:history.back()">뒤로가기</a>
</body>
</html>

존재하지 않는 URL로 접근했을 때 tomcat이 생성한 에러페이지가 아닌 직접 생성한 에러페이지가 나오는 것을 확인할 수 있습니다.