- Spring MVC 마스터하기 쿠키, 세션 32022년 05월 29일
- starryeye
- 작성자
- 2022.05.29.:53
서블릿은 세션 기능을 개발자를 위하여 이미 제공하고 있다.
HttpSession
직전 포스팅의 SessionManager와 비슷한 기능을 담당하지만.. 실제 설계 내용은 많이 다른것 같다.
HttpSession이 생성되면,
클라이언트와 서버간의 Cookie가 생성되고
key는 JSESSIONID
value는 추정불가능한 임의의 값이다.
<참고>
SessionManager
1개 WAS에 1개 세션(세션 저장소, SessionManager)
여러 클라이언트가 동일한 세션을 바라본다.
-> 쿠키에는 mySessionId:임의의 값으로 들어간다.
-> SessionManager에는 임의의 값이랑 loginMember(member 객체) 가 매핑될 수 있는 메모리 테이블이 존재한다.
->
HttpSession과 구조가 달라 용어 혼란이 올 수 있으니.. 생각하지말자..HttpSession
1개 WAS에 여러 세션(세션 저장소, HttpSession)
하나의 클라이언트가 하나의 세션(JSESSION:임의의값)을 바라본다. (쿠키)
세션들은 Tomcat(서블릿 컨테이너)이 관리한다. Tomcat이 HttpSession들의 저장소를 가짐
-> 클라이언트 - 서버간의 쿠키에는 JSESSION:임의의 값으로 들어간다.
-> Tomcat에는 임의의 값이랑 HttpSession이 매핑될 수 있는 메모리 테이블(HttpSession들의 저장소)이 존재한다.
-> HttpSession에는 여러 쌍의 key:value가 들어갈 수 있다.
(아래 예제 에서는 SessionConst.LOGIN_MEMBER : loginMember(member 객체) 가 들어갔다.)
HttpSession 객체를 사용하는 코드로 알아보자..
로그인
HttpServletRequest 의 getSession() 메서드는 파라미터로 boolean 값이 들어간다.
true 일 경우... (default)
-> Tomcat에 현재 요청 쿠키에 매핑되는 세션이 있으면 기존 세션 반환
(위 예시에서는 로그인했지만 로그인페이지로 강제로 들어온게 아니라면.. 기존 세션이 무조건 없다.)
-> Tomcat에 현재 요청 쿠키에 매핑되는 세션이 없으면 새로운 세션을 생성해서 반환한다.
false 일 경우...
-> Tomcat에 현재 요청 쿠키에 매핑되는 세션이 있으면 기존 세션 반환
-> Tomcat에 현재 요청 쿠키에 매핑되는 세션이 없으면 null 값 리턴
HttpSession 클래스의 setAttribute 메서드로 세션에(HttpSession) key, value 스타일로 저장할 수 있다.
<참고>
SessionConst 는 세션(HttpSession)에서 사용할 key값을 정의 해놓은 인터페이스이다.
인터페이스 이므로 변수는 public static final 키워드가 적용된다.
SessionConst.LOGIN_MEMBER 로 로그인용 세션 key를 얻을 수 있다.
로그아웃
현재 요청 쿠키의 JSESSION key의 Value(임의의 값)에 매핑되는 HttpSession을 찾아서 session 변수에 대입한다.
(getSession 메서드의 파라미터로 false가 들어가서 찾지 못할 경우 생성하지는 않는다.)
서버에서 유지되고 있는 세션이 찾아 지면, 해당 세션을 삭제 시킨다.
세션 유무에 따른 홈 화면
현재 요청 쿠키의 JSESSION key의 Value(임의의 값)에 매핑되는 HttpSession을 찾아서 session 변수에 대입한다.
(getSession 메서드의 파라미터로 false가 들어가서 찾지 못할 경우 생성하지는 않는다.)
서버에서 유지되고 있는 세션이 찾아 지면, 해당 세션(HttpSession)에서
로그인 당시 저장해놓은 SessionConst.LOGIN_MEMBER 키 값으로 저장 해놓은 Value(Member) 객체를 받고
로그인 되었을 경우의 홈화면으로 보낸다.
'Spring > MVC' 카테고리의 다른 글
Spring MVC 마스터하기 필터 1 (0) 2022.06.03 Spring MVC 마스터하기 쿠키, 세션 4 (0) 2022.06.03 Spring MVC 마스터하기 쿠키, 세션 2 (0) 2022.05.29 Spring MVC 마스터하기 쿠키, 세션 1 (0) 2022.05.29 Spring MVC 마스터하기 Validation 10 (0) 2022.05.28 다음글이전글이전 글이 없습니다.댓글