◇ PART · WEB

무상태성과 쿠키·세션

Spring 기초
SMHRD

학습 목표

1. 무상태성 (Stateless)

HTTP 는 한 요청을 처리하면 손님과의 연결을 끊고 그 손님을 잊습니다. 다음 요청이 오면 같은 사람인지 알 길이 없습니다.

비유: 매번 잊어버리는 점원. "방금 주문하신 분이 또 오셨네 — 누구셨더라?"

2. 두 가지 해결책

도구저장 위치설명
쿠키
(Cookie)
브라우저가게가 발급한 「작은 메모」를 손님이 들고 다닌다. 다음 요청 때 자동으로 함께 보내진다.
세션
(Session)
서버 메모리가게가 정보를 직접 보관하고, 손님에게는 보관함 「열쇠(세션 ID)」만 발급한다.

3. 흐름

쿠키

① 서버 → 브라우저 : Set-Cookie: id=abc123 ② 다음 요청 : Cookie: id=abc123 (자동 동봉)

세션

① 로그인 성공 : 서버 보관함에 정보 넣기 Set-Cookie: JSESSIONID=xyz789 ② 다음 요청 : Cookie: JSESSIONID=xyz789 서버가 보관함에서 정보 꺼냄
참고: 세션도 사실 쿠키를 씁니다 — 손목 도장(JSESSIONID)이 쿠키 형태로 발급됩니다. 다만 진짜 정보(이름·권한 등)는 서버에 안전히, 손님은 짧은 ID 만 들고 다닙니다.

4. 쿠키 vs 세션

항목쿠키세션
저장 위치브라우저서버
보안약함강함
용량~4KB
대표 용도장바구니·다크모드로그인 상태

5. F12 로 확인

  1. F12ApplicationCookies
  2. 현재 사이트의 쿠키 목록 확인 (JSESSIONID 등)
  3. Network 탭에서 Cookie 헤더가 매 요청에 자동으로 실리는 것 확인
실제 코드는 Part 5에서: 오늘은 「왜 필요한가」와 「어디에 저장되는가」 의 큰 그림만 잡습니다. HttpSession 사용·BCrypt·세션 로그인은 Part 5(회원과 게시판) 에서 본격 다룹니다.

6. Before / After

전 차시 끝

HTTP 메시지 모양은 알지만, 페이지 이동 시 「누군지 모르는 문제」는 인식 못함.

이번 차시 끝

HTTP 무상태성을 알고, 쿠키·세션이 그 한계를 우회하는 도구임을 안다.

학습 확인 체크리스트