java, spring

[Spring Framework] 404 에러 페이지

isaac.kim 2021. 5. 30. 00:02
728x90
반응형

[Spring Framework] 404 에러 페이지

 

도움이 되셨다면 광고 한 번 클릭 부탁드립니다. 한 번의 클릭이 제게 큰 힘이 된답니다!^^

 

WAS의 구동 중 가장 흔한 에러와 관련된 HTTP 상태 코드는 '404'와 '500' 에러 코드입니다. 500 메시지는 'Internal Server Error'이므로 @ExceptionHandler를 이용해서 처리되지만, 잘못된 URL을 호출할 때 보이는 404 에러 메시지의 경우는 조금 다르게 처리하는 것이 좋습니다.

반응형

 

▼ ExceptionHandler와 관련된 지난 글 ▼

https://lifere.tistory.com/125

 

서블릿이나 JSP 개발 시 web.xml을 이용해서 별도의 에러 페이지를 지정할 수 있습니다. 스프링 MVC의 모든 요청은 DispatcherServlet을 이용해서 처리되므로 404 에러도 같이 처리할 수 있도록 web.xml을 수정합니다. 

 

com.project.exception.CommonExceptionAdvice에 404 에러 메시지를 처리할 메서드를 추가합니다.

	@ExceptionHandler(NoHandlerFoundException.class)
	@ResponseStatus(HttpStatus.NOT_FOUND)
	public String handle404(NoHandlerFoundException ex) {
		return "custom404";
	}

에러 메시지는 custom404.jsp를 작성해서 처리합니다.

<%@ 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>
	<h1>해당 URL은 존재하지 않습니다.</h1>
</body>
</html>

 

존재하지 않는 URL을 호출하면 custom404.jsp 페이지가 보이는 것을 확인할 수 있습니다.


 

Java 설정을 사용하는 경우

web.xml에 설정한 throwExceptionIfNoHandlerFound를 설정하기 위해서는 서블릿 3.0 이상을 이용해야만 하고 WebConfig 클래스를 아래와 같이 수정해야 합니다. (서블릿 2.5 버전으로 실행해도 되긴 합니다. 책 설명은 3.0 이상)

 

package com.project.config;

import javax.servlet.ServletRegistration;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebConfig
extends AbstractAnnotationConfigDispatcherServletInitializer{

	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class[] { RootConfig.class };
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class[] { ServletConfig.class };
	}

	@Override
	protected String[] getServletMappings() {
		return new String[] { "/" };
	}
	
	@Override
	protected void customizeRegistration(ServletRegistration.Dynamic registration) {
		registration.setInitParameter("throwExceptionIfNoHandlerFound", "true");
	}

	
}

 

그 외 나머지, 위에서 작성했던 Controller에 메서드를 추가하고 custom404.jsp를 작성하고 잘못된 URL을 요청하면 같은 결과가 나타납니다.

 

스프링 프레임워크에서 404 Error 페이지를 커스텀으로 적용하는 방법을 알아보았습니다.


도움이 되셨다면 광고 한 번 클릭 부탁드립니다. 한 번의 클릭이 제게 큰 힘이 된답니다!^^
728x90
반응형