What is Session?
HTTP(HyperText Transfer Protocol 이하 HTTP)를 통해 Client와 Server간 통신하는 맥락에서 session의 의미는 상태를 가지지 않는 HTTP로 통신할 때 클라이언트로부터 서버에 전달된 요청이 동일한 사용자의 요청임을 서버에서 식별하기 위한 기술이다.
Why use Session?
HTTP의 특징은 상태를 가지지 않는다. 상태를 가지지 않는 다는 것은 앞의 요청과 뒤의 요청이 어떤 연결고리도 가지지 않는 것이다. 따라서 상태를 가지 않는 사용자A의 여러 요청을 서버는 동일한 사용자A로부터 요청된 것임을 알 수 없다. 동일한 사용자가 보낸 요청임을 알기 위해 session을 사용한다.
How Session works?
일반적으로 백엔드 개발자가 session을 직접 생성하지 않는다. 서버로부터 생성된 세션을 가져다 사용한다.
서버는 사용자의 요청이 서버에 들어오면 해당 요청에 대해 세션을 생성한다. 조금 더 정확히는 (톰캣 기준) 서버에 세션의 라이프사이클(생성, 소멸)을 관리하는 세션 매니저가 있다. 이 매니저가 세션을 생성하고 세션들이 모여있는 세션 풀을 관리한다.
Session은 여러가지 정보를 가지지만 그 중에 세션의 식별자인 Session Id와 세션에 각종 정보를 담을 수 있는 Session Attributes가 있다.
Usage Example
session을 사용하면 서로 다른 요청(페이지의 변경)이 있어도 로그인을 유지할 수 있다.
Reference
Tomcat Source - HttpSession(Interface), StandardSession(Class), Manager(Interface), StandardManager(Class)
'프로그래밍' 카테고리의 다른 글
하이버네이트 6에서 사용자 정의 함수 추가하기 (Adding user defined function in Hibernate 6) (0) | 2023.07.08 |
---|---|
[DB] Character Set, Collate이란 무엇인가? (2) | 2020.08.07 |
CQS(Command-Query Separation) (0) | 2020.03.15 |
AWS EC2 INSTANCE SCHEDULER로 INSTANCE 자동으로 켜고 끄기 (4) | 2020.03.03 |
스프링부트 - Controller란 무엇인가 (0) | 2018.06.16 |