[SPRING] Spring Boot - 독립 실행 형 바람둥이가있는 사용자 정의 404 페이지
SPRINGSpring Boot - 독립 실행 형 바람둥이가있는 사용자 정의 404 페이지
독립 실행 형 Tomcat 인스턴스에서 Spring 부팅 응용 프로그램을 실행하고 있으며 오류 페이지를 무시하려고합니다. 필자의 이해에서, Spring은 필터 ErrorPageFilter를 제공합니다.이 기능을 사용하면 Springs EmbeddedServletContainerCustomizer가 정상적으로이 오류를 정확하게 처리 할 수 있도록 오류 페이지를 설정할 수 있습니다.
그래서 내 표준 자동 구성 / 서블릿 이니셜 라이저가 한 클래스에 있습니다.
@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude = [ GroovyTemplateAutoConfiguration, SecurityAutoConfiguration, ErrorMvcAutoConfiguration, JmxAutoConfiguration ] )
class Application extends SpringBootServletInitializer {
@Override protected SpringApplicationBuilder configure( SpringApplicationBuilder application ) {
application.sources( Application )
}
(자동 구성 및 서블릿 초기화에 동일한 클래스를 사용하고 있는데, 이것이 내가 구성 메소드에서 Application 클래스를 전달한 이유입니다.)
SpringBootServletInitializer의 소스 코드를 보면 ErrorPageFilter 클래스가 여기에 클래스를 확장하여 추가되는 것처럼 보입니다. 나는 ErrorMvcAutoConfiguration을 꺼 놓았지만 - 다시 한번 그 소스 코드를 보면 기본 오류 페이지를 설정하고 실제로 ErrorPageFilter를 설정하지 않은 것처럼 보입니다.
그럼 내 오류 구성 파일을 가지고 :
@Configuration
class ErrorConfiguration implements EmbeddedServletContainerCustomizer {
@Override public void customize( ConfigurableEmbeddedServletContainer container ) {
container.addErrorPages(new ErrorPage( HttpStatus.NOT_FOUND, "/errors/404" ))
}
그러나 잘못된 URL을 방문하고 DispatcherServlet이 일치하는 항목을 찾지 못하면 tomcats /404.html을 볼 수 있습니다 - "/ errors / 404"에 연결된 내보기가 아닙니다 (이 경로는 thymeleaf보기에 매핑되어 있습니다. 템플릿, 잘 작동합니다 - / errors / 404로 이동하면 ok로 표시됩니다)
내 사용자 정의 오류 페이지가 작동하지 않는 이유는 무엇입니까? 로그를 추적 할 때, 나는 ErrorPageFilter가 설정되고 애플리케이션 시작시에 설정이 잘되었음을 알 수있다.하지만 요청이 들어 왔을 때 아무것도하지 않는 필터에 대해서는 언급하지 않았다.
해결법
-
==============================
1.이전 버전의 스프링 부트 (0.5.x)에는 다음 코드를 사용할 수 있습니다.
이전 버전의 스프링 부트 (0.5.x)에는 다음 코드를 사용할 수 있습니다.
public class ServerCustomization extends ServerProperties { @Override public void customize(ConfigurableEmbeddedServletContainerFactory factory) { super.customize(factory); factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/yourpath/error-not-found.jsp")); factory.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/yourpath/error-internal.jsp")); factory.addErrorPages(new ErrorPage("/yourpath/error-other.jsp")); } }
최신 봄 부트 버전 (1.X.RELEASE)에는 ServerProperties를 중심으로 리팩토링이 있습니다. 아래 참조,
public class ServerCustomization extends ServerProperties { @Override public void customize(ConfigurableEmbeddedServletContainer container) { super.customize(container); container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/jsp/404.jsp")); container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/jsp/500.jsp")); container.addErrorPages(new ErrorPage("/jsp/error.jsp")); } }
그런 다음 Bean을 정의하여 ServerProperies를 주입하십시오.
@Bean public ServerProperties getServerProperties() { return new ServerCustomization(); }
git에 게시 된 샘플 프로젝트
-
==============================
2.error라는 뷰를 구현하여 스프링 부트의 내장 에러 뷰를 사용하거나, error.whitelabel.enabled = false 속성을 설정하여 뷰의 스위치를 끄고 자신 만의 뷰를 구현할 수 있습니다. 문서에서 더 자세히 설명합니다.
error라는 뷰를 구현하여 스프링 부트의 내장 에러 뷰를 사용하거나, error.whitelabel.enabled = false 속성을 설정하여 뷰의 스위치를 끄고 자신 만의 뷰를 구현할 수 있습니다. 문서에서 더 자세히 설명합니다.
from https://stackoverflow.com/questions/27386261/spring-boot-custom-404-page-with-standalone-tomcat by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] applicationContext.xml 파일에서 Spring bean 정의를 활성화 또는 비활성화하는 방법이 있습니까? (0) | 2019.01.23 |
---|---|
[SPRING] 누락 된 클래스 org.springframework.objenesis.ObjenesisStd (0) | 2019.01.23 |
[SPRING] 게으른 One-To-One Spring JPA 및 "동적"JSON 작성 (0) | 2019.01.23 |
[SPRING] 리포지토리 리소스에 다중 세그먼트 경로를 사용하도록 Spring 데이터 REST를 사용자 정의하는 방법은 무엇입니까? (0) | 2019.01.23 |
[SPRING] 스프링 부트로 자동으로 https로 리디렉션하는 방법 (0) | 2019.01.23 |