-
17 세션(Session)Spring/01 Spring MVC 2023. 6. 5. 20:24반응형
1) 세션이란?
- 서로 관련된 요청들을 하나로 묶은 것 - 쿠키를 이용
browser마다 개별(session 객체)를 서버에서 제공
>> 세션 : 모음, 하나의 요청과 응답 / 하나의 브라우저와 하나의 서버(1:1관계)
① 브라우저가 요청을 보내면 서버가 응답(세션 아이디를 쿠키에 저장)
② 그 다음 요청부터는 요청에 쿠키가 자동으로 따라간다
>> 첫 번째 요청 빼고는 나머지는 세션
③ 세션이 끝나고 나면 새로운 세션 아이디가 발급
- 정리 : 원래 요청과 응답은 독립적인데, 쿠키를 이용하여 세션ID를 브라우저에 전달하여
그 이후에 요청에는 같은 세션ID를 요청에 포함하게 된다
(요청들을 하나로 묶어주는 역할→세션)
세션은 로그인부터 로그아웃까지
※ 세션의 종류 방법
①수동 종류 invalidate( );
②자동 종류 Timeout
2) 세션의 생성 과정
① 처음에 브라우저가 요청하면, 서버가 세션 객체를 만들게 된다
② 세션 객체는 세션ID를 가지고, 세션 객체를 사용할 수 있도록
쿠키에 세션ID를 담아 응답으로 보낸다
※ 세션ID : #2F460A 간출여서 이해하기 쉽도록 간추려 놓은 것 원래 세션ID는 길다
3) 세션 객체 얻기
① 컨트롤러에서 세션 저장소 사용법
② 세션ID가 일치하는 것을 찾는다
③ #2F460A에 key, value로 저장
4) 세션과 관련된 메서드
5) 세션의 종류
① 요청 간격이 30분이 넘으면, 응답에서 새로운 세션ID를 준다
② 그 다음 요청에는 새로운 세션ID를 사용
※session.invalidate( );를 호출해도 다음 요청에 새로운 세션ID를 응답으로 준다
6) 쿠키 vs 세션
쿠키를 허용하지 않는 브라우저에는 모든 URL에 세션ID를 붙여준다
>> 쿠키를 허용한다면 url링크에 세션ID를 붙여주지 않는다
<c:url>을 사용하지 않고, 하드 코딩으로 action="login/login" 으로 한다면?
(모든 쿠키 차단)
>> 응답헤더에 세션ID가 요청할때마다 바뀐다(세션 객체가 요청할때마다 생성)
>> 쿠키 차단, <c:url> 사용하지 않으면 세션ID를 붙여주지 않는다, 서버 입장에서는 브라우저가 계속 처음 요청을 보내는 걸로 인식(클라이언트를 구별할 방법이 없다)
브라우저가 쿠키를 허용하는지 안하는지 모르기 때문에 세션ID을 2가지 방법으로 보내준다
① url태그가 자동으로 세션ID를 붙여준다(서버에서 처리)
② 응답헤더를 이용해서 세션ID를 보내준다
반응형'Spring > 01 Spring MVC' 카테고리의 다른 글
19 예외처리(1) - 실습 (0) 2023.06.13 18 세션(Session)-실습 (0) 2023.06.11 16 쿠키(Cookie) (0) 2023.06.03 15 redirect와 forward (0) 2023.06.02 14 @GetMapping @PostMapping (0) 2023.05.01