스프링 부트를 활용한 웹 애플리케이션 개발은 정적 컨텐츠 제공, MVC 패턴 적용, RESTful API 구축이라는 세 가지 중요한 요소를 포함합니다. 각 포스트에서 한 가지씩 다뤄서 작성할 예정입니다.
(본 포스트는 인프런 김영한님의 강의 '스프링 입문-코드로 배우는 스프링부트, 웹 MVC, DB 접근 기술'을 보며 추가로 구글링 하여 정리하며 작성한 내용입니다.)
정적 컨텐츠(static content)는 서버에서 미리 준비된 상태로 클라이언트에게 제공되는 웹 컨텐츠를 말합니다. 이 컨텐츠는 서버 측에서 별도의 처리나 계산 없이 그대로 클라이언트에게 전달됩니다. 주로 웹사이트의 구조나 디자인을 담당하며, HTML, CSS, 이미지, JavaScript 파일 등이 이에 해당합니다. 정적 컨텐츠는 사용자가 요청할 때마다 동일한 내용을 제공하며, 서버의 리소스를 절약할 수 있어 빠른 응답 속도를 자랑합니다.
HTML 파일: 웹페이지의 기본 구조를 정의하는 파일로, 페이지의 제목, 문단, 목록 등을 포함합니다.
CSS 파일: 웹페이지의 스타일을 정의하는 파일로, 색상, 글꼴, 배경, 레이아웃 등을 지정합니다.
이미지 파일: PNG, JPEG, GIF 등의 이미지 파일로, 웹사이트의 시각적 요소를 제공합니다.
JavaScript 파일: 기본적인 인터랙션을 제공하는 스크립트 파일로, 클라이언트 측에서 실행되는 코드가 포함됩니다.
동영상 파일: 웹사이트에 삽입된 동영상도 정적 콘텐츠의 일종으로, 서버에서 미리 준비된 상태로 제공됩니다.
**resources/static/hello-static.html**
<!DOCTYPE HTML>
<html>
<head>
<title>static content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>
1. 요청 처리
사용자가 localhost:8080/hello-static.html과 같은 URL로 접근하면, 해당 요청이 스프링 부트 애플리케이션으로 들어옵니다.2. 스프링 컨테이너에서 컨트롤러 확인
스프링은 먼저 요청된 URL에 매핑되는 컨트롤러가 있는지 확인합니다. 이 경우, hello-static 관련 컨트롤러가 있는지 찾습니다.3. 컨트롤러가 없는 경우
만약 해당 요청을 처리할 컨트롤러가 존재하지 않는다면, 스프링은 정적 콘텐츠 폴더(src/main/resources/static)를 검색합니다.4. 정적 파일 제공
static 폴더에서 hello-static.html 파일이 발견되면, 해당 파일이 브라우저에 전달되어 사용자가 볼 수 있게 됩니다.
스프링 부트는 기본적으로 src/main/resources/static, src/main/resources/public, src/main/resources/resources, src/main/resources/META-INF/resources 폴더에서 정적 파일을 제공하도록 설정되어 있습니다.
만약 컨트롤러가 해당 요청을 처리할 수 없고, static 폴더에서도 파일을 찾을 수 없다면, 스프링 부트는 404 Not Found 에러를 반환합니다.