인프런 커뮤니티 질문&답변

Dongjun Lee님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

섹션2의 정적 컨텐츠 부분에 질문이 있습니다

작성

·

65

0

강의를 한번 돌리고 복습중입니다

섹션2. 정적 컨텐츠 강의에서 위와 같이 /hello-static.html을 입력하여 요청하면 우선 1번과 같이 hello-static관련 controller에서 있는지 확인하고 없으면 2번과 같이 정적 컨텐츠를 내려준다고 설명하셨습니다.

이와 관련하여 궁금증이

 

uri요청 자체가 hello-static.html로 요청자체에 .html을 요청하였기 때문에 .html을 찾아야 하는게 흐름상 맞지 않나라는 생각이 듭니다. gpt를 통해 알아보니 .html을 처리하는 controller가 있을 수 있기 때문이라고 하는데, 그렇다면 hello-static.html을 요청할 경우 스프링 컨테이너에서 찾는 controller의 이름이 어떻게 되나요??

dispatcher servlet처럼 논리 이름만을 생각하여 .html을 제외한 hello-static이라는 controller의 이름을 찾을 것 같은데 맞는지 궁금하네요

질문 요점: /hello-static.html로 요청했을 경우 1번 경우의 스프링 컨테이너에서 controller를 찾을때 찾는 이름의 기준이 무엇인지에 대한 질문.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

스프링 부트와 관련해 궁금증을 해결해 드리겠습니다.

스프링 부트에서 정적 컨텐츠 요청 처리 과정은 주로 DispatcherServlet을 통해 이루어집니다. DispatcherServlet은 클라이언트로부터 들어오는 모든 요청을 첫 번째 단계로 받는 프론트 컨트롤러입니다. 클라이언트가 /hello-static.html과 같이 정적 리소스를 요청할 경우, 스프링 부트는 먼저 해당 요청을 처리할 컨트롤러가 있는지 확인합니다.

정적 컨텐츠 처리에 있어서, 스프링 부트는 Controller를 찾지 않고 내부적으로 설정된 정적 리소스 위치에서 해당 파일이 있는지 검사합니다. 별도로 DispatcherServlet에서 .html을 처리하는 컨트롤러를 찾는 것이 아니라, 정적 리소스 처리 규칙에 따라 /static, /public, /resources, /META-INF/resources 등의 디렉토리에서 hello-static.html 파일을 찾게 됩니다.

요청된 URI에 대한 컨트롤러의 이름 찾기보다는, 스프링 부트의 정적 리소스 위치에서 해당 파일을 찾는 방식으로 이해하시면 됩니다. .html 파일을 찾아 응답하는 것은 별도의 컨트롤러 명명보다는 정적 리소스 처리 로직에 의해 이루어지므로, 일반적인 컨트롤러 탐색 로직과는 다릅니다.

따라서, 정적 컨텐츠 처리에 있어서는 DispatcherServlet이 직접 .html 파일을 처리하기 위한 컨트롤러를 찾는 것이 아니라, 정적 리소스로서 해당 파일을 서빙하는 흐름을 갖습니다.

질문해 주셨던 부분에 대해 명확한 답변이 되었길 바랍니다. 추가 질문이 있다면 언제든 문의해 주세요!