쌓고 쌓다

[SpringBoot] 정적 컨텐츠(Static Content) 본문

프로그래밍/spring

[SpringBoot] 정적 컨텐츠(Static Content)

승민아 2023. 3. 11. 10:36

https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-static-content

 

Spring Boot Features

Graceful shutdown is supported with all four embedded web servers (Jetty, Reactor Netty, Tomcat, and Undertow) and with both reactive and Servlet-based web applications. It occurs as part of closing the application context and is performed in the earliest

docs.spring.io

 

정적 컨텐츠: 웰컴 페이지처럼 서버에서 작업 없이 웹 페이지(파일)를 그대로 웹 브라우저에 내려줌.

MVC와 템플릿 엔진: JSP, PHP가 템플릿 엔진이다. html을 서버에서 프로그래밍(변형)해서 동적으로 바꿔 내려줌.

API: JSON 데이터를 클라이언트에 내려줌.

 

 

링크 내용

스프링 부트는 기본적으로 /static 폴더에서 정적 컨텐츠를 가져온다.

 

 

 

아래의 경로에 html 파일을 작성하고 localhost:8080/hello-static.html로 요청해 보자.

 

경로

resources/static/hello-static.html

 

 

요청 결과

요청 결과

 

정적 컨텐츠 이해

hello-static.html을 내장 톰켓 서버가 먼저 요청을 받고. 이 요청을 스프링한테 넘긴다.

스프링에서 hello-static 컨트롤러를 찾는다. 이와 매핑된 컨트롤러가 없다. 그다음,

resources에 static/hello-static.html을 찾는다. 존재하기에 이것을 반환해 준다.

 

먼저 컨트롤러에서 hello-static.html을 찾아봤으니 컨트롤러가 우선순위를 갖는다.

 

우선순위를 확인해 보기 위해 

hello-static 컨트롤러를 하나 만들어보자.

@Controller
public class StaticController {

    @GetMapping("hello-static.html")
    public String test(Model model) {
        return "static";
    }
}

hello-staic.html로 요청이 오면 templates/static.html을 반환할 것이다.

 

하지만 아래의 사진을 보면 static/hello-static.html과 templates/static.html이 존재해서

hello-static.html로 요청이오면 무엇이 우선순위를 가질지 모른다. 요청을 보내보자.

무엇이 우선순위를 가질까?

 

요청 결과

templates/static.html

Comments