[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.정적 디렉토리 전체를 리소스로 옮기고 addResourceHandlers 구성을 완전히 제거하면 모든 것이 잘 동작합니다.
정적 디렉토리 전체를 리소스로 옮기고 addResourceHandlers 구성을 완전히 제거하면 모든 것이 잘 동작합니다.
이는 리소스 구조가 다음 이미지와 같은 것을 의미합니다.
from https://stackoverflow.com/questions/23733777/spring-boot-resourcelocations-not-adding-the-css-file-resulting-in-404 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 매개 변수 값에 의한 Spring MVC 요청 매핑을 분리하는 법 (0) | 2019.03.21 |
---|---|
[SPRING] ContextLoaderListener로드 중 ClassNotFoundException (0) | 2019.03.21 |
[SPRING] 스프링 데이터 JPA가 entityManager.persist (...) 또는 entityManager.merge (...) 메소드를 호출하는 방법 (0) | 2019.03.21 |
[SPRING] 스프링 2.5에서 셧다운 훅 등록하기 (0) | 2019.03.21 |
[SPRING] 봄 부팅 : 구성 Sqlite 데이터베이스 (0) | 2019.03.21 |