[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 페이지를 커스텀으로 적용하는 방법을 알아보았습니다.
도움이 되셨다면 광고 한 번 클릭 부탁드립니다. 한 번의 클릭이 제게 큰 힘이 된답니다!^^
'java, spring' 카테고리의 다른 글
[Spring Framework] SQLSessionFactory (0) | 2021.06.11 |
---|---|
[Spring framework] 스프링 MVC 프로젝트의 기본 구성 (0) | 2021.06.07 |
[Spring framework] Controller의 Exception 처리 (0) | 2021.05.29 |
[Spring Framework] 스프링 파일 업로드 Java config (0) | 2021.05.29 |
[Spring framework] fileupload, 스프링 파일 업로드 (0) | 2021.05.29 |