[스프링부트 #3] 스프링 MVC와 HTTP 요청/응답 정리

HTTP 통신의 기본기와 스프링 MVC 흐름에 대해서 정리하였습니다.
도경원's avatar
Aug 04, 2025
[스프링부트 #3] 스프링 MVC와 HTTP 요청/응답 정리

1. HTTP 메서드별 요청/응답 방식

GET 요청
  • 역할: 리소스를 조회(SELECT)
  • 요청 특성: Body 없음, URL + Header만 포함
  • 응답: 조회된 데이터를 Body에 담아 응답
POST 요청
  • 역할: 리소스를 생성(INSERT)
  • 요청 특성: Body에 JSON 또는 Form 데이터 포함
  • 응답: 로그인 완료와 같은 응답 오거나 302 리다이렉션
PUT 요청
  • 역할: 리소스를 전체 수정(UPDATE)
  • 요청 특성: 일반적으로 Body를 담아 전체 데이터를 전달
DELETE 요청
  • 역할: 리소스를 삭제(DELETE)
  • 요청 특성: 대부분 URL에 식별자를 포함, Body는 없음

2. 서블릿과 스프링의 관계

Servlet
  • 자바로 HTTP 요청과 응답을 처리하는 기본 객체
  • 스프링은 이 Servlet을 기반으로 작동하면서 편의성과 구조를 더해줌
Spring이 중요한 이유
  • 개발자가 직접 서블릿 코드를 작성하지 않아도 됨
  • 어노테이션 기반으로 선언만 하면 스프링이 객체 생성 및 주입(DI)을 해줌
  • 그래서 어노테이션 학습이 필수

3. HTTP 통신의 3대 구성 요소

프로세스와 프로세스가 대화하는 규칙 3가지
  • URL → 어디에 요청할 것인지
  • Body → 어떤 데이터를 보낼 것인지 (POST, PUT)
  • Query String → 검색 조건 등 (SQL의 WHERE절과 유사)

4. DispatcherServlet의 역할

디스패처 서블릿이란 ?
spring MVC 프레임워크에서 모든 클라이언트 요청을 처리하는 프론트 컨트롤러 역할을 하는 서블릿
DispatcherServlet(디스패처 서블릿)
  • 요청 URL을 분석하여 어떤 컨트롤러를 호출할지 결정
  • 필요한 객체를 주입한 뒤 컨트롤러 메서드를 호출 (invoke)
DispatcherServlet이 인식하는 어노테이션
  • @Controller: Controller 클래스로 인식함

5. 스프링의 3계층 구조

Controller
  • 요청을 받고 응답을 반환
  • 파라미터를 받아 서비스에 전달하고 결과를 받아 클라이언트에 응답
Service
  • 비즈니스 로직 처리 담당 (예: 회원가입, 로그인, 결제 등)
Repository
  • DB와 직접 통신
  • SQL 또는 JPA로 쿼리 실행 및 결과 반환
Repository가 중요한 이유
  • DB와 대화하려면 SQL 또는 ORM 문법을 이해해야 함

6. 통신 흐름 요약

  • 클라이언트 ↔ 톰캣 ↔ 스프링 계층 ↔ DB
  • 톰캣은 요청을 받고 DispatcherServlet이 컨트롤러에 전달
  • 리포지토리는 DB와 통신
  • 전체 흐름은 요청 → 비즈니스 처리 → DB → 응답

8. SSR (Server Side Rendering)

  • 서버에서 HTML 페이지를 렌더링해서 클라이언트에 전달
  • 프론트엔드에서 화면을 만들지 않고, 백엔드에서 화면을 만들어 전달
  • JSP, Thymeleaf 등이 대표적인 SSR 템플릿 엔진
 
Share article

Gyeongwon's blog