[SPRING] 컨텍스트 경로로 봄 부팅 정적 컨텐트
SPRING컨텍스트 경로로 봄 부팅 정적 컨텐트
컨텍스트 경로를 사용할 때 스프링 부트의 정적 컨텐츠에 문제가 있습니다. 즉 : localhost : 8080 / {appname} /에 앱을 배포하고 싶습니다.
컨텍스트 경로없이 응용 프로그램을 실행하면 모든 것이 잘 작동하고 Spring Boot는 (리소스 / 템플릿 /에서 Thymeleaf를 사용하여) .html 파일을 찾은 다음 JS 파일 (리소스 / 정적 / js /에서)을 추가하지만 실행할 때 문맥 패스.
server.context-path=/{appname}
또는
server.servlet-path=/{appname}
.html 페이지는 여전히 JS 파일에 의해 404 오류를 생성하여 표시됩니다.
application.properties의 spring.resources.static-locations를 변경하고 MvcConfig.class의 addResourceHandlers () 메소드를 재정의하려고했지만 어느 것도 작동하지 않는 것 같습니다.
CookieLocaleResolver와 MessageSource를 정의해야하기 때문에 MvcConfig 클래스를 사용합니다.하지만 이는 MvcConfig에있는 것입니다. @EnableWebMvc를 사용하지 않고 @ComponentScan과 함께 @SpringBootApplication 주석을 사용합니다.
어떤 도움을 주시면 감사하겠습니다 :)
해결법
-
==============================
1.귀하의 의견에 따라 :
귀하의 의견에 따라 :
문제는 Spring에서 js를 제공하지 않기 때문에 페이지가 리소스에 대한 URL을 올바르게 작성하지 못한다는 것입니다.
Thymeleaf는 th 속성 앞에 src 속성을 표시하여 자동으로이를 지원하는 메커니즘을 제공합니다.
2 절 "문맥 - 상대 URL"참조 : www.thymeleaf.org/doc/articles/standardurlsyntax.html
-
==============================
2.아래 예제는 스프링 부트에서 정적 리소스를 구성하는 방법을 보여줍니다.
아래 예제는 스프링 부트에서 정적 리소스를 구성하는 방법을 보여줍니다.
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(final ResourceHandlerRegistry registry) { registry.addResourceHandler("/**/*.js").addResourceLocations("/ui/static/"); registry.addResourceHandler("/**/*.css").addResourceLocations("/ui/static/"); } }
경로 패턴
지정된 URL 경로 패턴을 기반으로 정적 리소스를 제공하는 리소스 처리기를 추가합니다. 핸들러는 지정된 경로 패턴 중 하나와 일치하는 모든 수신 요청에 대해 호출됩니다.
"/ static /"또는 "/css/{filename:\w+\.css}"와 같은 패턴은 허용됩니다. 구문에 대한 자세한 내용은 ** org.springframework.util.AntPathMatcher를 참조하십시오.
귀하의 jsp / html 보이는 아래와 같이 정적 콘텐츠를 참조하십시오
<link href="/webAppContext/cssa/bootstrap.min.css" rel="stylesheet"/> <script src="/webAppContext/jquery-2.2.1.min.js"></script> <script src="/webAppContext/bootstrap.min.js"></script>
어떤 브라우저가 정적 컨텐츠를 얻으려고 시도 하는지를 사용하는 URL
http://localhost:8080/webAppContext/jquery-2.2.1.min.js http://localhost:8080/webAppContext/bootstrap.min.js http://localhost:8080/webAppContext/cssa/bootstrap.min.css server.servlet.context-path=/webAppContext is in your application.properties
-
==============================
3.내 구성은 다음과 같습니다.
내 구성은 다음과 같습니다.
@Configuration public class MvcConfig extends WebMvcConfigurerAdapter { public static final Logger LOG = LoggerFactory.getLogger(MvcConfig.class); @Bean public LocaleResolver localeResolver() { CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver(); cookieLocaleResolver.setCookieName("language"); cookieLocaleResolver.setCookieMaxAge(-1); cookieLocaleResolver.setDefaultLocale(Locale.FRENCH); return cookieLocaleResolver; } @Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:i18n/lang"); messageSource.setDefaultEncoding("UTF-8"); return messageSource; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new Urli18nRewriterInterceptor()); } }
및 폴더 구조 :
폴더 구조
from https://stackoverflow.com/questions/38788459/spring-boot-static-content-with-context-path by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring에서 NoClassDefFoundError : ClassInterceptor 클래스가 classpath 내에 존재하지만 throw합니다. (0) | 2019.05.14 |
---|---|
[SPRING] 봄 OAuth2와 JWT (0) | 2019.05.14 |
[SPRING] 사용자 지정 PropertyMap을 정의하려고 할 때 NullPointerException이 발생합니다. (0) | 2019.05.14 |
[SPRING] [단순 유형, 클래스 java.time.LocalDate 유형의 값을 인스턴스화 할 수 없습니다. (0) | 2019.05.14 |
[SPRING] Spring에 스프링 게으른 프록시 팩토리가 있습니까? (0) | 2019.05.14 |