💡/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를 통해 서버는 각 사용자의 세션 값을 식별한다