복붙노트

[SPRING] 스프링 부트 ResourceLocations는 css 파일을 추가하지 않으므로 404가됩니다.

SPRING

스프링 부트 ResourceLocations는 css 파일을 추가하지 않으므로 404가됩니다.

그럼 로컬 컴퓨터에서 잘 작동하는 작동중인 스프링 부팅 응용 프로그램이 있습니다. 그러나 나는 그때 내 css 또는 자바 스크립트의 패키지를 mvn 할 때, 발견

/src/main/wepapp/css

대상 디렉토리에 작성된 jar 파일 (패키지)에 복사 중입니다.

스프링 부트 참조 가이드

그래서 나는 모든 js와 css 폴더를 폴더에 넣을 수 있다는 것을 의미합니다.

/src/main/resources/static

즉 지금 내 구조는 그렇게 보입니다.

/src/main/resources/static/css/
/src/main/resources/static/js/

그러나 내 thymeleaf 템플릿은 모두 여전히

/src/main/resources/templates/

나는 그것을했고, 내가 아는 한, ResourceHandler를 ResourceHandlerRegistry에 추가해야한다는 것을 알고있다. 이전에 내 모든 ccs가 "/ src / main / wepapp / css /"에 있었을 때 ResourceHandlers가 저처럼 보였고 저에게 잘 맞았습니다.

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/pdfs/**").addResourceLocations("/pdfs/").setCachePeriod(0);
    registry.addResourceHandler("/img/**").addResourceLocations("/img/").setCachePeriod(0);
    registry.addResourceHandler("/js/**").addResourceLocations("/js/").setCachePeriod(0);
    registry.addResourceHandler("/css/**").addResourceLocations("/css/").setCachePeriod(0);

}

여러 핸들러를 추가하려고했습니다.

 registry.addResourceHandler("/css/**").addResourceLocations("/css/").setCachePeriod(0);

또는

 registry.addResourceHandler("/css/**").addResourceLocations("/static/css/").setCachePeriod(0);

또는

 registry.addResourceHandler("/css/**").addResourceLocations("/").setCachePeriod(0);

기타

그러나 그들 중 누구도 나를 위해 일하지 않았습니다. /css/corresponing.css 또는 /js/corresponing.js를 찾으려고 할 때 html 템플릿이 표시되지만 웹 브라우저 콘솔이 404를 다시보고 있습니다.

이 문제의 디버깅을 단순화하기 위해 의도적으로 내 테스트 프로젝트에서 스프링 보안을 사용하지 않도록 설정했습니다.

내가 완전히 이해하지 못하는 또 하나의 문제는 배포 어셈블리입니다. 나는 필자가 maven에 의해 생성 된 나의 타겟 패키지 jar 파일에 특정 폴더를 갖고 싶을 때, 필자의 배포 어셈블리에 그 폴더를 포함시킬 필요가 있다고 말한 기사를 읽었지만, "mvn 패키지"는 여전히 copping이 아니다. my / src / main / static 폴더의 모든 내용 (하위 폴더에 있음)을 대상 jar 파일에 저장합니다. 그러나 jar 파일에 "templates"폴더가 복사 된 것을 볼 수 있습니다. 따라서 장면 뒤에는 다른 마술이 일어납니다.

여기 내 thymeleaf 레이아웃에서 CSS를 선언하는 방법입니다.

/src/main/resources/templates/layout.html


<!DOCTYPE html>
<html>
  <head>
    <title layout:title-pattern="$DECORATOR_TITLE - $CONTENT_TITLE">Task List</title>
    <link rel="stylesheet" type="text/css" media="all"  th:href="@{/css/syncServer.css}"  href="../css/syncServer.css" />
    ...
  </head>
  <body>
      ...
  </body>
</html>

내 질문은 : 내가 지금까지 완료 올바른 구성 및 다른 옵션 / 설정 내가 알고 있어야 할 응용 프로그램을 찾을 수 있도록 CSS 파일을 찾습니다 / src / main / static / css /

추가 1

시험 프로젝트

git@github.com:TheDictator/sArchitecture.git

해결법

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

    1.정적 디렉토리 전체를 리소스로 옮기고 addResourceHandlers 구성을 완전히 제거하면 모든 것이 잘 동작합니다.

    정적 디렉토리 전체를 리소스로 옮기고 addResourceHandlers 구성을 완전히 제거하면 모든 것이 잘 동작합니다.

    이는 리소스 구조가 다음 이미지와 같은 것을 의미합니다.

  2. from https://stackoverflow.com/questions/23733777/spring-boot-resourcelocations-not-adding-the-css-file-resulting-in-404 by cc-by-sa and MIT license