• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

HttpSession 정리

24.02.24 19:39 작성 24.02.24 19:44 수정 조회수 182

1

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

[질문 내용]HttpSession에 관해서 공부한 내용을 정리해보았는데 한번 피드백해주시면 감사하겠습니다
1. 정리한 부분

getSession()을 통해 이미 생성되어있는 세션 저장소에 할당할 HttpSession 빈 세션 객체 하나를 생성 후 반환

 

getSession()을 통해 생성된 HttpSession 빈 세션 객체에 setAttribute()를 통하여 map 형태의 세션 정보를 저장할 수 있다. 이때 세션 정보는 (세션 이름 , 회원 정보) 로  형태로 저장되고 이 순간 해당 세션을 식별하기 위한 세션id는 톰캣에서 자동으로 생성해줌

 

따라서 getSession()을 통해 세션 저장소에 저장될 한 세션 객체 HttpSession의 형태를 굳이 표현해보자면 (sessiondId , Map<String , Object>)이고 , 거기다가 setAttribute()를 통해 “세션 이름”과 “회원 정보”를 지정해서 저장하면  (UD3R9A33 , (“loginMember” , member)) 형태로 저장됨

 

그럼 이 순간 톰캣 서버가 자동으로 Set-Cookie: JSESSIONID=UD3R9A33를 지정해서 클라이언트에 전달함

 

그에 따라 서버와 클라이언트 간 쿠키를 통해 자동 지정된 세션id를 통해 사용자 여부를 식별할 수 있는 것

이렇게 이해하면 될까요?

 

2. 추가 질문 사항

세션 저장소의 한 공간을 차지하는 한 세션 객체 HttpSession에 setAttribute()를 여러 개 호출할 수 있는데 이는 한 HttpSession 공간에서 또 여러 개의 세션 정보를 가질 수 있다고 이해하면 될까요?

만약 이가 맞다면 getSession()을 통해 여러 개의 HttpSession을 생성하는 것과 setAttribute()를 통해 한 HttpSession 안에서 여러 개의 세션을 생성하는 것의 차이가 궁금합니다

 

답변 1

답변을 작성해보세요.

0

codesweaver님의 프로필

codesweaver

2024.02.25

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

  1. 정리하신 내용이 맞습니다.

  2. setAttribute()는 이미 생성한 세션객체에 값을 추가하는 메서드 입니다. 세션을 추가로 생성하지는 않습니다. 세션내부에 값을 map 형태로 저장하고 있다고 가정하면, map 콜렉션에 새로운 값을 add (이미 존재하는 값이라면 덮어씌우기)가 됩니다.

감사합니다.

경민님의 프로필

경민

질문자

2024.02.25

답변해주셔서 감사합니다

혹시 2번 같은 경우에 한 세션 객체에 값을 추가한다는 뜻이 한 세션은 여러 이름에 대응되는 여러 객체를 가질 수 있다고 이해하면 될까요??

 

HttpSession session = request.getSession();
session.setAttribute("loginMember1" , member1);
session.setAttribute("loginMember2" , member2);

이런 식으로 코드가 구성되어있다고 하면 session은 loginMember1 , loginMember2 이름에 member1 , member2 회원 객체를 동시에 갖고 있는 것입니다 !