• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

세션을 만드는 것과 회원 정보를 보관하는 것의 관계

23.11.03 00:44 작성 조회수 131

0

===
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
HttpSession session = request.getSession();

위 코드는 세션이 있으면 그대로 사용, 없으면 세션을 새롭게 생성이라고 공부했습니다.

 

session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);

그리고 위 코드는 세션에 로그인 회원 정보를 보관하는 거라고 이해했습니다.

 

여기서 궁금합니다.

세션을 생성하는 것과 회원 정보를 보관하는 것이 따로 존재한다면, 세션을 생성한다는 것이 무슨 의미가 있는지 모르겠습니다. 만약 세션만 만들고 회원 정보를 넣지 않는다면 세션 저장소에 특정 JSESSIONID 값을 키로 가지지만, value는 null인 상태로 저장되는 걸까요?

그리고 하나의 세션에 여러 쿠키를 가질 수 있다고도 이해했습니다. 어차피 유저를 식별하는 데 하나의 쿠키만 있으면 될텐데 왜 세션에 여러 쿠키를 저장할 수 있는지 모르겠습니다.

답변 1

답변을 작성해보세요.

0

codesweaver님의 프로필

codesweaver

2023.11.03

안녕하세요. 김동민님, 공식 서포터즈 코즈위버입니다.

request.getSession() 은 서버가 클라이언트에게 유일한 식별키를 생성한다는 의미가 있습니다. 이 세션키를 이용해 특정한 정보등을 서버에 저장할 수 있게 됩니다. 비유를 하자면 클라이언트에게 캐비넷을 이용할 수 있는 키를 발급해준 것입니다. 캐비넷 안에 아무것도 넣지 않았다면 텅 빈(null) 상태로 존재합니다.

 

쿠키를 여러개 발급하는 이유는 각 사용용도를 다르게 하기 위함입니다. 사용자 정보를 담는 쿠키, 사용자 환경정보(접속 브라우저 등등)을 담는 쿠키 등 용도를 분리하여 편하게 사용하기 위함입니다

감사합니다.

김동민님의 프로필

김동민

질문자

2023.11.05

답변 감사합니다.

제가 이해한 바를 정리하면,

세션은 여러 물건을 담을 수 있는 하나의 '캐비넷'입니다.

특정 캐비넷을 식별할 수 있는 것이 세션 ID이고, 이를 클라이언트에게 쿠키의 형태로 줍니다.

하나의 캐비넷(세션)에는 다양한 정보를 담을 수 있습니다. 따라서 캐비넷에 담긴 정보들을 식별하는 역할이 세션 이름입니다.

 

제대로 이해한 걸까요?

codesweaver님의 프로필

codesweaver

2023.11.06

안녕하세요 김동민님.

네 맞습니다 :)