[SPRING] 스프링 부트 응용 프로그램을위한 임베디드 Tomcat 디렉토리 목록
SPRING스프링 부트 응용 프로그램을위한 임베디드 Tomcat 디렉토리 목록
Tomcat이 내장 된 스프링 부트 응용 프로그램이 있습니다. 나는 tomcat 디렉토리 목록을 통해 다른 위치의 일부 이미지 파일 및 폴더를 노출하고 싶었습니다. 그래서 나는 아래의 내용을 내 구성 파일에 추가했다.
public class AppConfig extends WebMvcConfigurerAdapter
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/images/**").addResourceLocations("file:///xxx/yyy/images/");
}
}
이름을 알면 개별 이미지에 액세스 할 수 있습니다.
예 : localhost : 8080 / images / file.jpg.
그러나 기본적으로 디렉토리 목록이 false이므로 "localhost : 8080 / images /"를 통해 이미지 목록에 액세스하여 사용 가능한 모든 이미지를 확인할 수 없습니다.
나는 목록을 추가하기 위해 아래의 옵션을 시도했지만 작동하지 않았다.
public class MyApplication implements ServletContextInitializer{
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("listings", "true");
}
}
해결법
-
==============================
1.SpringBoot Embedded Tomcat JSPServlet 옵션과 동일한 방법으로 EmbeddedServletContainerCustomizer @Bean을 사용하여 기본 서블릿을 검색하고 init 매개 변수를 구성 할 수 있습니다.
SpringBoot Embedded Tomcat JSPServlet 옵션과 동일한 방법으로 EmbeddedServletContainerCustomizer @Bean을 사용하여 기본 서블릿을 검색하고 init 매개 변수를 구성 할 수 있습니다.
@Bean public EmbeddedServletContainerCustomizer customizer() { return new EmbeddedServletContainerCustomizer() { @Override public void customize(ConfigurableEmbeddedServletContainer container) { if (container instanceof TomcatEmbeddedServletContainerFactory) { customizeTomcat((TomcatEmbeddedServletContainerFactory) container); } } private void customizeTomcat(TomcatEmbeddedServletContainerFactory tomcat) { tomcat.addContextCustomizers(new TomcatContextCustomizer() { @Override public void customize(Context context) { Wrapper defServlet = (Wrapper) context.findChild("default"); defServlet.addInitParameter("listings", "true"); } }); } }; }
Andy Wilkinson에게 명성이 있습니다.
-
==============================
2.springboot / **는 ResourceHttpRequestHandler에 매핑됩니다. 호출이 DefaultServlet에 위임되어 결코 목록이 적용되지 않습니다. Mark의 솔루션을 두 가지 더 조정해야만 작동 할 수있었습니다.
springboot / **는 ResourceHttpRequestHandler에 매핑됩니다. 호출이 DefaultServlet에 위임되어 결코 목록이 적용되지 않습니다. Mark의 솔루션을 두 가지 더 조정해야만 작동 할 수있었습니다.
Deployment folder structure /myhome/mytest ----myapp.jar ----/tomcat/webapps ----/static --------All static files go here application.yml server : tomcat : basedir : tomcat Current working dir to run the app /myhome/mytest url to test : http://localhost:8080/static
from https://stackoverflow.com/questions/35004870/embedded-tomcat-directory-listing-for-spring-boot-application by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 부팅 1.5.2 - 로고를로드 한 후 웹 응용 프로그램이 멈 춥니 다? (0) | 2019.04.23 |
---|---|
[SPRING] 스프링 보안이 작동하지 않는 이유는 무엇입니까? (0) | 2019.04.23 |
[SPRING] BadCredentialsException : Kerberos 검증에 실패했습니다. (0) | 2019.04.23 |
[SPRING] @Transactional 메서드 내에서 LazyInitializationException 발생 (0) | 2019.04.23 |
[SPRING] 스프링 보안 익명 액세스를 가능하게하는 Java 기반 구성 (0) | 2019.04.23 |