Spring - 404 페이지 처리

하승·2022년 7월 11일
0

웹 개발반 - Spring

목록 보기
7/8
post-thumbnail

404 페이지 처리

500 메세지는 문법 오류 발생시 @ExceptionHandler를 이용해서 처리가 가능하지만,
404 메세지는 오류가 아닌 URL, URI를 잘못 호출했을 때 처리해야 한다. 따라서 서블릿이
web.xml에 간 후 어디로 가야할 지 모를 때 NoHandlerFoundException을 발생시키도록
설정을 해놓고, 실제로 매핑을 못 찾았을 때 그 예외가 발생되고, 예외 발생시
CommonExceptionAdvice 객체가 잡아준다. 따라서 404 메세지 대신에 원하는 페이지로
응답할 수 있게 된다.
따라서 web.xml에 404 에러 페이지로 넘기지 않고 Exception을 발생시키는 설정을 해주어야한다

		<init-param>
			<param-name>throwExceptionIfNoHandlerFound</param-name>
			<param-value>true</param-value>
		</init-param>

테스트

NoHandlerFoundException이 발생하면 error_404.jsp로 이동하게 하는 메소드를 만든다.
즉, 404에러가 났을때 404 메세지 대신 error_404.jsp로 이동하게 된다.

@ControllerAdvice
@Log4j
public class CommonExceptionAdvice {
  @ExceptionHandler(NoHandlerFoundException.class)
      @ResponseStatus(HttpStatus.NOT_FOUND)
      public String handle404(NoHandlerFoundException nfe) {
          return "error_404";
      }
    }
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>해당 URL은 존재하지 않습니다.</h2>
	<a href="/ex01">메인으로 돌아가기</a>
</body>
</html>

이제 따로 매핑해두지 않은 url주소를 입력하고 실행해본다면

우리가 만들어둔 페이지가 잘 나오는 것을 확인할 수 있다.

profile
화이팅!

0개의 댓글