sourcecode

Spring-boot에서 정적 웹 콘텐츠를 추가하는 방법

copyscript 2023. 6. 28. 21:55
반응형

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>내가 그걸 어떻게 고칠 수 있는지 알아요?

업데이트됨:

enter image description here

업데이트됨 2: @jfcorugedo 시도

작동하지 않습니다.보세요, 그게 당신이 말했던 거예요?

enter image description here

업데이트됨 3: @jfcorugedo 시도, 두 번째 조언:

enter image description here

은 정인내다사액합용세니다야해스여하적을 이용해서 접근해야 한다고 합니다.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

저는 다음과 같은 구조로 테스트 프로젝트를 만들었습니다.

enter image description here

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 폴더를 생성했고 모든 것이 작동합니다.

folder hierarchy in my test project

폴더에 test.js 파일을 넣고 URL http://localhost:8080/js/test.js를 입력하면 응용 프로그램에서 JS 파일을 제공합니다.

동일한 폴더 계층을 생성하시겠습니까?

을 보고 .org.springframework.boot.autoconfigure.web.ResourcePropertiesclass, 당신은 다음 코드 라인을 볼 수 있습니다.

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.port8080)

다음을 사용하여 이러한 디렉터리를 사용자 지정할 수 있습니다.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

반응형