정적 컨텐츠

숭맹이·2025년 4월 24일
0

김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 정리

1. 정적 컨텐츠 (Static Content)

정적 컨텐츠는 가장 단순한 형태의 웹 리소스 제공 방식입니다. 서버는 로직 없이 파일을 있는 그대로 브라우저에 반환합니다.

🔹 특징

  • 서버 처리 로직 없음
  • 빠르고 단순
  • HTML, CSS, JS, 이미지 파일 등
  • SEO에 유리

🔹 Spring Boot에서의 처리 방식

Spring Boot는 기본적으로 /resources/static 디렉토리에 위치한 파일들을 정적 컨텐츠로 서빙합니다.

폴더 구조

src/main/resources/static/hello-static.html

예제 HTML

<!DOCTYPE HTML>
<html>
<head>
<title>static content</title>
<meta charset="UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>

접근 URL

http://localhost:8080/hello-static.html

🔹 처리 순서

  1. 브라우저가 /hello-static.html 요청
  2. Spring은 해당 URL을 처리할 컨트롤러 존재 여부 확인
  3. 없으면 /static 폴더에서 파일 탐색 후 반환

❗ 정적 컨텐츠는 단순하지만 동적 처리(예: 사용자 맞춤형 페이지)가 불가합니다.


2. MVC와 템플릿 엔진

전통적인 서버 사이드 렌더링 방식입니다. 컨트롤러가 모델 데이터를 생성하고, 뷰 템플릿(예: Thymeleaf, JSP)을 통해 HTML을 생성합니다.

🔹 구조

  • Model: 비즈니스 데이터
  • View: 템플릿 엔진 (JSP, Thymeleaf 등)
  • Controller: 요청 처리 및 데이터 전달

🔹 장점

  • 서버 주도형 렌더링으로 복잡한 비즈니스 로직 처리에 적합
  • SEO 및 초기 로딩 최적화

🔹 단점

  • 클라이언트와 서버 간 결합도가 높음
  • 화면 변경 시 서버 템플릿까지 변경 필요

Spring MVC는 이 구조를 자연스럽게 지원합니다. @Controller + ModelAndView 조합이 일반적입니다.


3. API 방식 (JSON 기반)

모던 웹/모바일 환경에서는 API 방식이 널리 사용됩니다. 서버는 HTML 대신 JSON 형식의 데이터만 클라이언트에 전달하며, UI는 클라이언트(React, Vue, 모바일 앱)가 담당합니다.

🔹 특징

  • 데이터와 UI 완전 분리 (백엔드/프론트엔드 분리)
  • JSON 포맷 주로 사용
  • 모바일 앱, SPA(React, Vue)와의 통신에 적합

🔹 장점

  • 재사용성, 확장성 우수
  • 프론트엔드 독립 개발 가능
  • 서버 간 통신에도 적합 (Microservice)

🔹 단점

  • SEO 대응 어려움
  • 클라이언트 개발 비용 증가
@RestController
public class HelloApiController {
    @GetMapping("/api/hello")
    public Map<String, String> hello() {
        return Map.of("message", "Hello, API!");
    }
}
profile
👨🏻‍💻 Backend Developer

0개의 댓글