복붙노트

[SPRING] 스프링 4 정적 리소스로드

SPRING

스프링 4 정적 리소스로드

현재 src / main / java / resources / assets 디렉토리에 배치 된 많은 css 및 js 파일과 함께 봄 MVC 응용 프로그램이 있습니다.

ResourceHandlerRegistry 클래스를 사용하여 템플릿 용 파일을로드하는 방법에 대한 Spring Docs와 튜토리얼을 읽었습니다. 나는이 튜토리얼의 코드 스 니펫이 프로젝트 구조에 완벽하게 맞을 것이라고 생각했다.

하지만 나는 항상 나의 리소스 파일에 404를 얻는다.

다음은 현재 실행중인 Application / Configuration 클래스입니다.

@Configuration
@EnableAutoConfiguration
@ImportResource("/applicationContext.xml") // only used for jpa/hibernate
@EnableWebMvc
@ComponentScan(basePackages = "at.sustain.docutools.viewer.presentation")
public class Application extends WebMvcConfigurerAdapter {

    public static void main(String args[]) {
        SpringApplication.run(Application.class);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/assets/**")
                .addResourceLocations("classpath:/assets/");
        registry.addResourceHandler("/css/**")
                .addResourceLocations("/css/");
        registry.addResourceHandler("/js/**")
                .addResourceLocations("/js/");

    }

}

그리고 여기에 HTML 파일 (자원 / 템플릿에 배치)에 HEADER가 사용되었습니다.

<head>
    <!-- local Stylesheet -->
    <link href="css/style.css" rel="stylesheet" />
    <!-- local Javascript files -->
    <script src="js/general.js"></script>
    <script src="js/xmlhttp.js"></script>
    <!-- local Javascript libraries -->
    <script src="js/lib/filter.js"></script>
    <script src="js/lib/jquery.fs.zoomer.js"></script>
    <script src="js/lib/jquery.validate.js"></script>
</head>

html 파일은 내 컨트롤러 클래스를 통해 올바르게로드되지만 예를 들어 보려고 할 때 내 style.css 파일 (http : // localhost : 8080 / css / style.css) 이미 언급 한 404가 있습니다.

Spring 4에서이 주제에 대한 더 많은 정보를 제공 할 수있는 더 이상 자원을 찾을 수없는 것 같습니다. 일부 구성 파일을 놓치고 있습니까? 아니면 내 구조에 맞는 리소스 핸들러 등록이 아닙니까? 귀하의 답변을 기다리고 있습니다.

해결법

  1. ==============================

    1.스타일 시트 및 JavaScript 파일이 "/ assets"아래에 있다고 가정합니다. "/ assets / css"및 "/ assets / js"디렉토리가 있다고 가정합니다. 그런 다음, 다음 자원 핸들러 정의가 제공됩니다.

    스타일 시트 및 JavaScript 파일이 "/ assets"아래에 있다고 가정합니다. "/ assets / css"및 "/ assets / js"디렉토리가 있다고 가정합니다. 그런 다음, 다음 자원 핸들러 정의가 제공됩니다.

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
      registry.addResourceHandler("/assets/**")
        .addResourceLocations("classpath:/assets/");
    }
    

    HTML에서 이러한 리소스를 다음과 같이로드합니다.

    <link href="/assets/css/style.css" rel="stylesheet" />
    <script src="/assets/js/general.js"></script>
    
  2. from https://stackoverflow.com/questions/24080025/spring-4-loading-static-resources by cc-by-sa and MIT license