작성
·
276
0
안녕하세요 영한님 좋은 강의 항상 감사합니다. 몇 가지 질문있습니다.
1. 개념정리. 아래 질문글도 봤지만 노파심에 다시 여쭤보고 싶습니다.
쿠키 이름 : JSESSIONID
쿠키 값 : 34DDLFIJOIJDF3DF (UUID 랜덤값)
세션 key이자 id = 34DDLFIJOIJDF3DF (UUID 랜덤값)
세션 name = loginMember
세션 value = Member(id = 1 .. 중략)
즉, 쿠키 값에 세션key(=id) 값을 담아서 나간다 가 맞지요?
1.1 세션key(=id) 값으로 Member 객체를 매칭시킨다.? 세션 name (loginMember)으로 Member객체를 매칭시킨다? 어느 말이 맞나요? @SessionAttribute(name = "loginMember", required = false) Member loginMember) 에서 본다면 후자가 맞는 것 같구요. 세션key, name, value 관계가 조금 헷갈리네요.
2. 결국 DB에 세션 key(=id) 값을 직접 가지고 있지는 않는거네요? 강의에서 직접 세션 만들기에서는 DB에 UUID값과 과 member객체를 매칭시켜서 들고있기는 하지만, servlet이 제공하는 HttpSession에서 메모리에 그 둘을 매칭시켜서 들고 있으니까요. 맞죠?
3. 서블릿 http 제공 쿠키 이름은 default로 JSESSSIONID로 되어있는데, api통신에서 클라이언트쪽이 쿠키 이름을 다르게 보내달라고 하면, 내재된 setCookie name설정은 어떻게 수정해서 보내나요?
추가로) 오타수정은 어디에다 말씀드리면 되나요. p41에 10만게 -> 10만개.
평소에 쿠키, 세션에 대해 궁금증이 많았던 만큼 질문이 좀 길어졌네요 ㅠㅠ
항상 친절한 답변 감사합니다!
답변 1
0
안녕하세요. highjune님, 공식 서포터즈 David입니다.
.
1. 세션ID는 WAS에서 세션을 관리하기 위해 필요한 값입니다. 특정 요청에서 사용되는 세션(value)을 가져오려면 세션을 식별할 수 있는 세션ID(key)가 필요합니다.
세션을 가져왔다면 해당 세션에 저장된 멤버 객체(value)를 불러와야 합니다. 이때 이전에 사용한 key("loginMember")가 필요한 것입니다.
즉, 세션ID는 세션을 가져올 수 있는 key이고, "loginMember" 문자열은 세션 내 Member 객체를 가져올 수 있는 key입니다.
따라서 Member 객체를 세션으로부터 가져오는 것은 "loginMember" 문자열(key)입니다.
2. 세션을 직접 만드는 강의에서도 DB를 사용하지 않습니다. 내부에 Map을 하나 만들고 그 Map을 세션으로 사용하고 있습니다. 즉, 메모리에 만들어진 저장공간입니다.
3. JSESSIONID 라는 이름은 Tomcat 설정으로 변경 가능합니다. 스프링부트라면 Embedded Tomcat을 사용하고 있으며 Embedded Tomcat의 기본 설정을 변경하는 방법도 있으니 이 부분은 직접 검색해보시면 좋을 것 같습니다.
4. 오타수정은 지금과 같이 질문글에 남겨주시면 영한님께 전달하도록 하겠습니다.
.
감사합니다.