본문 바로가기

Spring/Spring Boot 기초

Spring Boot - 웹개발 기초 - ① 정적컨텐츠

웹 개발의 기초에는 세가지 방법이 있다.
1. 정적컨텐츠방법
2. MVC와 템플릿엔진
3. API
 
각각 내용을 정리할 예정이며, 이번에는 정적컨텐츠에 대해 정리했다.
세부적인 것 보다는 어떻게 동작하는지 큰 틀을 이해하는 목적으로 작성했다.

정적컨텐츠란 welcome page를 만들어서 전달했던 것 처럼 html파일 자체를 그대로 웹브라우저에 전달해주는 방식이다.

Spring Boot에서는 정적컨텐츠 기능을 자동으로 제공한다. 
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

 


 
 

실제로 어떻게 동작하는지 IDE에서 테스트 할 수 있는 실습과정이다.

 

브라우저에 보여주고 싶은 원하는 html파일을 resources/static 경로에 생성한다.

 

 

테스트용 html 소스를 간단히 작성했다.
(파일명 : hello-static.html)

<!DOCTYPE HTML>
<html>
<head>
<title>jin2rang's static content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
	jin2rang 정적 컨텐츠 파일 입니다.
</body>
</html>
 

프로젝트를 실행(run)시킨 후에 해당 파일이 브라우저에 잘 보이는지 확인한다.

 

현재 서버 포트가 8080이므로, localhost:8080/hello-static.html을 브라우저에서 요청한다.

그러면, 생성한 html파일을 볼 수 있다.

이때, 꼭 ' 파일명.html '로 요청해야한다.

 

이렇게 정적컨텐츠는 resources/static폴더에서 요청한 html파일을 가져와 브라우저에 보여준다.
대신 프로그래밍을 할 수 없고 html파일화면 그 자체만 볼 수 있다.

 


 

 
인프런 강의 자료 발췌
 

동작원리를 그림으로 살펴보면, 다음과 같다.

웹에서  localhost:8080/hello-static.html 요청하면 내장되어있는 톰캣서버가 요청을 받고, 스프링 컨테이너에게 전달한다.
그러면, 첫번째로 컨트롤러에서 hello-static이 있는지 확인한다.
그 이유는 컨트롤러가 우선순위를 가지고 있기 때문에 먼저 확인하는 것이다.
 
hello-static과 맵핑이 되어있는 컨트롤러를 찾지 못하면 resources/static에서 hello-static이 있는지 확인한 후, 웹 브라우저에 전달한다.