💡/MEMO
HttpSession에 사용 시 같은 Key를 쓰는데 어떻게 구분해서 값을 가져오나요?
defyuil
2024. 11. 10. 22:52
⛏️ Session은 각 클라이언트마다 하나씩 생성되어 제공된다
각 클라이언트의 요청마다 Session은 다르게 생성되기 때문에, 같은 문자열 key를 이용하여 session.getAttribute(" user"); 를 호출하더라도, 각 사용자의 정보가 저장된 다른 세션 값이 보이게 되는 것이다
⛏️ Session 이란?
서버간의 연결이 지속적으로 유지되는 상태
클라이언트에서 상태 정보를 유지하는 기술은 쿠키(Cookie)라고 함
쿠키는 클라이언트 측 또는 사용자의 브라우저에 저장되는 것이다. 반대로 서버에서 상태 정보를 유지하는 기술을 세션(Session)이라고 한다!
즉, 세션은 클라이언트 별로 각각의 상태 정보를 서버에서 저장하는 기술이다. 이는 브라우저가 종료될 때까지 유지됨!!
⛏️ 그렇다면 왜 Session은 각 클라이언트 마다 하나씩 생성되는것일까?
- HTTP의 특성을 보면 알 수 있음
HTTP 특성
- HTTP는 무상태(Stateless) 프로토콜이다.
- 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어진다
- 클라이언트가 다시 요청하면 이전 요청을 기억하지 못한다
- 클라이언트와 서버는 서로 상태를 유지하지 않는다
Session의 특성
- 클라이언트가 처음 서버에 연결(setAttribute)을 하면 하나의 session id가 생성된다
- 이 session id를 통해 서버는 각 사용자의 세션 값을 식별한다