Spring-boot에서 정적 웹 콘텐츠를 추가하는 방법
여기에 있는 정보를 사용하여 스프링 부트 서버에 정적 웹 콘텐츠를 추가하려고 합니다.
이전 링크에 나와 있는 여러 폴더에 필요한 .js 및 .css 파일을 추가하려고 했지만 작동하지 않습니다.
/META-INF/resources/ /resources/
: 내가만것아다닙니이든▁the를 작성하지 않았습니다./static/
그리고./public/
프로젝트의 절대 경로를 모르기 때문에 폴더를 표시할 수 없습니다.
나는 추가했습니다.addResourceHandlers
방법:
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!registry.hasMappingForPattern("/webjars/**")) { registry.addResourceHandler("/webjars/**").addResourceLocations( "classpath:/META-INF/resources/webjars/"); } if (!registry.hasMappingForPattern("/**")) { registry.addResourceHandler("/**").addResourceLocations( RESOURCE_LOCATIONS); } }
HTML 파일의 참조는 다음과 같습니다.
<script src="bootstrap-switch.js"></script>
내가 그걸 어떻게 고칠 수 있는지 알아요?
업데이트됨:
업데이트됨 2: @jfcorugedo 시도
작동하지 않습니다.보세요, 그게 당신이 말했던 거예요?
업데이트됨 3: @jfcorugedo 시도, 두 번째 조언:
은 정인내다사액합용세니다야해스여하적을 이용해서 접근해야 한다고 합니다.mydomain/<context>/<resource type>/resource
예를 들어:
http://mydomain/app/js/test.js
http://mydomain/app/img/test.jpg
애플리케이션 컨텍스트를 사용하거나 단순히 상대 경로를 사용하여 리소스를 작성할 수 있습니다.
<script src="js/bootstrap-switch.js"></script>
또는
<script src="/<myapp>/js/bootstrap-switch.js"></script>
하지만 만약 당신이 웹jar와 함께 부트스트랩을 사용하고 있다면 당신은 써야 합니다.
<script src="/<myapp>/webjars/bootstrap/<version>/js/bootstrap-switch.js"></script>
github에는 이 https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-static 을 설명하는 프로젝트가 있습니다.
업데이트 1
저는 다음과 같은 구조로 테스트 프로젝트를 만들었습니다.
http://localhost:8080/css/style.css에서 style.css에 액세스할 수 있습니다.
http://start.spring.io/ 을 사용하여 새 프로젝트를 만들 수 있습니다.
다른 옵션은 Spring Tool Suite 또는 IntelliJ IDEA를 사용하는 것입니다.이전 링크와 같이 올바른 구성으로 새 프로젝트를 만들 수 있습니다.
addResourceHandlers 메서드를 추가할 필요가 없습니다. Spring boot은 자체 코드로 이 메서드를 실행합니다.
웹 앱 폴더에 파일을 넣지 마십시오.
다음 디렉토리 중 하나에만 파일을 저장하면 됩니다.
/META-INF/resources/ /resources/ /static /public
를 들어,과 같이 .js/bootstrap-switch.js
은 다음 중 .
/META-INF/resources/js/bootstrap-switch.js /resources/js/bootstrap-switch.js ...
내 /src/main/resources 내에 META-INF/resources/js 폴더를 생성했고 모든 것이 작동합니다.
이 폴더에 test.js 파일을 넣고 URL http://localhost:8080/js/test.js를 입력하면 응용 프로그램에서 JS 파일을 제공합니다.
동일한 폴더 계층을 생성하시겠습니까?
을 보고 .org.springframework.boot.autoconfigure.web.ResourceProperties
class, 당신은 다음 코드 라인을 볼 수 있습니다.
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
미의라는 입니다./META-INF/resources/
,/resources/
,static/
그리고.public/
디렉터리를 사용하여 정적 콘텐츠를 제공할 수 있습니다.
여러분은 수 있습니다.static/
또는public/
아래 디렉터리resources/
디렉토리를 지정하고 정적 내용을 저장합니다.다음을 통해 액세스할 수 있습니다.http://localhost:8080/your-file.ext
(계속)server.port
8080)
다음을 사용하여 이러한 디렉터리를 사용자 지정할 수 있습니다.spring.resources.static-locations
에서application.properties
.
예를 들어 다음 구성을 제공합니다.
spring.resources.static-locations=classpath:/custom/
사용할 수 있습니다.custom/
아래 폴더resources/
정적 파일을 제공하고 위의 URL을 통해 액세스할 수 있습니다.
루트에 /static 폴더가 있는 임의의 위치에 폴더를 만듭니다.작업 공간 어디에나 있을 수 있습니다.예:\mywebapp\static.C:\mywebapp을 런타임 클래스 경로에 추가하거나 Intellij/Eclipse를 사용하는 경우 C:\mywebapp 폴더를 라이브러리로 추가합니다.
이것은 정적 html을 소스 폴더로 추가하는 것과는 다르며, 이는 빌드할 때마다 출력 클래스 폴더에 복사됩니다.만약 당신이 앵귤러나 센차를 사용하는 큰 웹 앱이나 단일 페이지 앱을 가지고 있다면, 이것은 고통입니다.대신 C:\mywebapp 폴더를 라이브러리 폴더로 추가하거나 실행 시간 클래스 경로 폴더로 추가합니다.
이 기능의 이점은 jsonp나 cors를 처리하지 않고도 jjax 등의 서비스와 동일한 호스트/포트에서 Javascript 코드를 실행할 수 있다는 것입니다.
언급URL : https://stackoverflow.com/questions/29018892/how-add-static-web-content-in-spring-boot
'sourcecode' 카테고리의 다른 글
SQL이 where 절에서 열 별칭을 인식하지 못합니다. (0) | 2023.06.28 |
---|---|
스프링 부트 액추에이터 상태 끝점을 사용자 지정 끝점으로 변경 (0) | 2023.06.28 |
날짜를 올바르게 저장하는 방법은? (0) | 2023.06.28 |
SQL Server 데이터베이스의 모든 스키마 목록을 가져오려면 어떻게 합니까? (0) | 2023.06.28 |
스프링 부트 연속 빌드로 실행 (0) | 2023.06.28 |