HTTP 세션 질문
안녕하세요.
HTTP 세션 강의를 듣다가 의문이 들어 질문드립니다.
직접 세션을 만들어서 구현했을 때는 Map 구조에 key, value 형태로 메모리 저장으로 세션을 구현했는데요.
1. HTTP 세션도 이와 동일한 원리라고 하셨는데, 그러면 request.getSession()을 하게 되면, key, value 형태의 Map구조에 들어갈 배열이 생성되는 것이고, setAttribute()로 서버 내부의 Map 구조에 저장되는 형태인가요? 세션이 생성, 저장되는 정확한 원리가 궁금합니다.
추가적으로 이해가되지 않는 부분이 있습니다.
2. logout 기능에서 request.getSession(false)로 세션을 받아 세션이 null이 아니라면 invalidate()로 제거해주었는데요. 여기서 서버에는 현재 로그인한 사람뿐만 아니라 다른 유저의 세션 값도 존재할텐데, getSession()으로 어떻게 나와 관련된 세션만 얻어올 수 있는지 궁금합니다.
직접 세션을 구현했을 때는 Map구조이기 때문에 key 값으로 조회를 했는데요. 여기서는 아무런 매개변수 없이 찾는다는게 의문이었습니다. (클라이언트 마다 세션이 독립적으로 개별로 생성되고, 관리되는 형태일까요? )
질문을 작성하면서 아무래도 제가 무언가 놓치고 있다는 생각이 들었습니다. 혹시라도 잘못된 방향의 질문이라면, 제가 부족할만한 지식이 무엇인지 알려주시면 감사하겠습니다.
답변 1
4
안녕하세요, snowdrop6342 님. 공식 서포터즈 codesweaver 입니다.
.
1. request.getSession()을 호출하였을때 해당 접속자에 대한 세션파일이 없다면 생성, 있다면 생성된 세션파일을 객체 형태로 사용할 수 있는 HttpSession 객체를 반환합니다. 세션 파일은 말씀하신것처럼 key=value 형태의 텍스트 파일입니다. 이를 HttpSession 객체가 getAttribute, setAttribute 등의 인터페이스를 제공하여, 개발자가는 세션을 편하게 사용할 수 있습니다.
2. 세션을 생성할때 세션 키를 유니크 값으로 생성합니다. 그래서 모든 접속자는 각자의 고유한 세션 키를 서버로부터 발급받습니다, 이후 클라이언트가 추가적인 요청을 할 때 이 세션 키를 서버로 함께 전송하여 식별하는 작업을 거치게 됩니다. 자신의 세션키에 해당하는 파일 외의 파일은 제어할 수 없기에 안전합니다.
.
추가로, 이런 세션의 작동원리 때문에 여러대의 서버가 업무를 분산 처리하고 있는 경우, 세션 파일의 공유 문제가 복잡해집니다. serverA에서 발급한 세션 키를 serverB 에서 사용할 수 없기 때문입니다.
.
감사합니다.
이미지 업로드와 db 트랜잭션 묶는법
0
43
1
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
53
2
MessageSourceTest 코드
0
47
1
인터셉터 에러 설정
0
48
1
resolveArgument()메서드 질문
0
57
1
43강 검증1 에서 실패 로직 관련 질문있습니다.
0
57
2
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
2
133
3
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
0
90
3
pdf 오타 문의
0
57
1
ItemUpdateForm 검증 관련 질문입니다.
0
48
1
22page 링크 주소 변경
0
59
2
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
0
53
1
섹션3번 수업에 대한 질문입니다.
0
80
2
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
0
85
2
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
0
65
1
자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다
0
142
3
스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문
0
63
1
톰캣 에러 페이지가 안보입니다.
0
103
2
apiEceptionController에서 센드 에러 호출하면 안되는지?
0
81
1
세션 타임아웃시 쿠키 삭제 방법이 없나요?
0
118
2
ApiExceptionController 질문드립니다.
0
64
1
셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?
0
66
1
MemberRepository 필드의 fianl 선언 유무
0
85
2
혹시 index.html 에서는 fragment 사용이 안되는건가요
0
58
1





