![[스프링부트 #3] 스프링 MVC와 HTTP 요청/응답 정리](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog-custom%3Ftitle%3D%255B%25EC%258A%25A4%25ED%2594%2584%25EB%25A7%2581%25EB%25B6%2580%25ED%258A%25B8%2B%25233%255D%2B%25EC%258A%25A4%25ED%2594%2584%25EB%25A7%2581%2BMVC%25EC%2599%2580%2BHTTP%2B%25EC%259A%2594%25EC%25B2%25AD%252F%25EC%259D%2591%25EB%258B%25B5%2B%25EC%25A0%2595%25EB%25A6%25AC%26tag%3DTemplate%2B1%26description%3D%26template%3D3%26backgroundImage%3Dhttps%253A%252F%252Fsource.inblog.dev%252Fog_image%252Fdefault.png%26bgStartColor%3D%252323ec86%26bgEndColor%3D%252323ec86%26textColor%3D%2523000000%26tagColor%3D%2523000000%26descriptionColor%3D%2523000000%26logoUrl%3D%26blogTitle%3DGyeongwon%2527s%2Bblog&w=2048&q=75)
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