728x90
반응형

 

이전에 작성했던 Custom Error Page 에 대한 글 url 입니다.

 

https://gigas-blog.tistory.com/110

 

[Spring] Spring Boot 2.0 Error Custom Page

Spring Boot 2.0 기준으로 작성되었습니다. 홈페이지를 만들었는데 소스코드가 보여지는 에러페이지가 보여진다면 사용자 입장에서 잘 만들어진 홈페이지라고 생각하지 않을겁니다. 이런 디테일함 하나가 좋은 사..

gigas-blog.tistory.com

 

 

 

Spring reference 를 찾아보니 SpringBoot 에서 제공하는 쉬운 방식이 있었습니다.

 

주어진 상태코드에 대한 사용자 정의 HTML 을 생성해서 /error 폴더에 추가만 하면 동작한다고 합니다.

 

예를 들어 404 에러를 HTML 파일에 연결하려면 아래와 같은 폴더구조가 됩니다.

src/
 +- main/
     +- java/
     |   + <source code>
     +- resources/
         +- public/
             +- error/
             |   +- 404.html
             +- <other public assets>
 

 

 

 

 

 

FreeMarker 템플릿을 사용해서 모든 오류를 연결하려면 아래와 같은 구조가 됩니다.

 

5xx 으로 시작되는 모든 에러를 하나의 HTML 파일에 맵핑한다는 것이죠.

src / 
 + - main / 
     + - java / 
     | + <소스 코드> 
     + - 리소스 / 
         + - 템플릿 / 
             + - 오류 / 
             | + - 5xx.ftl 
             + - <다른 템플릿>
 

 

 

 

Spring Boot 2.x 에는 static 폴더 아래에 error 페이지를 만들어서 진행하면 됩니다.

 

이게 끝입니다. 그냥 폴더만들고 에러코드와 맞는 이름으로 html파일만 생성하면 됩니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>404 Page Not Found</title>
</head>
<body>
    404 Error
</body>
</html>
 

 

 

 

 

 

 

임의의 url로 이동했을시에 정상적으로 아래와같은 페이지가 보여질 것입니다.

 

 

 

 

 

Spring Boot 에서 제공하는 Custom Error Page 처리에 알아보았습니다. 

 

ErrorController 를 구현하면 동작하지 않으니 주의 바랍니다.

 

728x90
반응형
728x90
반응형

 

Spring Boot 2.0 기준으로 작성되었습니다.

 

홈페이지를 만들었는데 소스코드가 보여지는 에러페이지가 보여진다면

 

사용자 입장에서 잘 만들어진 홈페이지라고 생각하지 않을겁니다.

 

 

 

 

이런 디테일함 하나가 좋은 사이트를 만드는데 상당히 중요합니다.

 

간단하게 등록하는 방법을 알아보겠습니다.

 

 

 

 

먼저 맞춤 HTML 오류 페이지를 만들어야합니다.

 

Thymeleaf  템플릿 엔진을  사용하기 때문에 error 파일을 저장합니다 .

 

resource > templates 안에 error 페이지를 담는 package 를 만들었습니다.

 

handleError 에서 return 해주는 이름과 맞춰주면 됩니다.

 

 

 

 

 

ErrorController 인터페이스 를 구현하는 클래스를 만들고 

 

getErrorPath ()   재정의하여 오류 발생시 호출 할 사용자 정의 경로를 반환해야합니다.

 

getErrorPath ()에 의해 반환 된 경로에 대한 매핑을 만듭니다 . 

 

이렇게하면 컨트롤러가 / error  경로 에 대한 호출을 처리 할 수 ​​있습니다 .

/*
 * Error Custom Page Controller
 */
@Controller
public class ApiErrorController implements ErrorController {
    
    private final String ERROR_PATH = "/error";
    
    public ApiErrorController() { }
 
    @RequestMapping("/error")
    public String HandleError(HttpServletRequest request) {
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
        
        if(status != null) {
            Integer statusCode = Integer.valueOf(status.toString());
            
            if(statusCode == HttpStatus.NOT_FOUND.value()) {
                return ERROR_PATH+"/error-404";
                
            } else if(statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
                return ERROR_PATH+"/error-500";
            }
        }
        
        return ERROR_PATH+"/error";
    }
 
    @Override
    public String getErrorPath() {
        return "/error";
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

 

 

 

 

그런 다음 404 오류의 경우 예를 들어 error-404.html 페이지가 표시됩니다.

 

 

728x90
반응형

'프로그래밍 > Spring' 카테고리의 다른 글

[Spring] Gradle 외부 Jar 등록  (0) 2019.04.22
[Spring] Spring Boot 2.0 @Configuration  (0) 2019.04.17
[Spring] Spring Boot Servlet 등록  (0) 2019.04.17
[Spring] web.xml Servlet 스키마  (0) 2019.04.17
MAC OS에 maven 설치  (0) 2019.02.26

+ Recent posts