Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

한바다

No static resource index 오류 본문

카테고리 없음

No static resource index 오류

한바다진화 2024. 10. 11. 01:00

✅ 프로젝트를 생성 후 실행 시 지속적으로 404 오류와 함께 No static resource index가 발생하였다.

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Oct 10 20:27:19 KST 2024
There was an unexpected error (type=Not Found, status=404).
No static resource index.
org.springframework.web.servlet.resource.NoResourceFoundException: No static resource index.
	at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:585)

 

✔️ 이 문제는 Spring boot가 index.html을 찾지 못해서 발생하였다.

- 404 오류 : Not Found 페이지를 찾을 수 없음, 페이지가 졸재하지 않거나 잘못된 URL입력

 

스프링부트 폴더 구조에서 src/main/resources 아래에 templates폴더는 Java 탬플릿(응답화면)을 모아두는 폴더로

주로 html 파일이 존재하는데 분명 해당위치에 파일이 위치 했는데도 스프링부트가 index.html파일을 찾지 못하고 있었다!!

[에러 원인]

현재 Spring Boot가 index.html 파일을 정적리소스로 찾으려고 하고 있기 때문에. 탬플릿으로 인식하고 있지 않아서

원인은 템플릿 엔진과 정적리소스 처리 방식의 차이로인해 발생한 것으로 보여짐 

따라서 정적리소스(HTML파일,이미지,CSS,JS 파일등)는 src/main/resource/static 폴더에 있어야 정상적으로 로드된다.

 

🗹 여기서 templates폴더와 static폴더에 담고 있어야하는 파일을 알아보자!

templates 폴더의 역할

- 동적 HTML 탬플릿 templates 폴더는 주로 동적인 콘텐츠를 렌더링할 때 사용

(ex:동적 HTML 페이지를 렌더링하는 탬플릿 엔진(Thymeleaf, JSP 등)

<h1>Hello, ${name}!</h1> <!-- 'name' 변수가 서버에서 전달되어 출력됨 --> )

static 폴더의 역할

- 정적파일 저장소, Spring  Boot는 자동으로 static 폴더에 있는 파일들을 정적자원으로 처리, 별도의 컨트롤러 설정없이도

  클라이언트 요청에 응답

- CSS, JS , 이미지 파일 등

 

따라서 정적리소스로 인식한 index.html은 static폴더 안에 담아야 했다.

src/main/resources/templates/index.html 파일을 src/main/resources/static/index.html 옮기고 나니

더이상 에러는 발생하지 않았따!!

 

그런데!! 이클립스 개발환경을 껏다가 다시 재실행시 동적리소스 templates에 index.html, test.html

파일을 옮겨 담아도 정상적으로 노출이 되고야 말았다!!!

 

🌸 스프링부트 src/main/resources에서   

     static폴더는 정적인 파일 저장소!! 

     templates 폴더에 담아야할 파일은 동적파일들

     따라서 No static resource index 오류는 정적리소스를 찾으려고 했지만 index.html을 찾지 

     못해서 발생하였다 🌸