Session Scope
클라이언트(웹 브라우저) 당 하나의 session 객체가 생성, 관리한다.
✔︎ 웹 브라우저별로 변수(정보)를 관리하고자 할 경우 사용한다.
✔︎ 세션 객체는 상태 정보를 유지하기 위해 사용한다.
- 클라이언트마다 세션 정보가 다른데, 예를 들어 사용자마다 로그인 정보가 다른 것처럼 사용자별로 유지가 되어야 할 정보가 있을 때 사용한다.
- 그래서 각 클라이언트마다 유지해야 하는 정보들을 session scope을 이용해 유지시켜준다.
✔︎ 웹 브라우저간의 탭 간에는 세션정보가 공유되기 때문에, 각각의 탭에서는 같은 세션정보를 사용할 수 있다.
✔︎ session 객체는 프로그래밍 할 때 적당한 시간을 지정한다던가 혹은 브라우저가 닫히게 된다던가 이런 특성에 따라서 없어진다.
✔︎ HttpSession 인터페이스를 구현한 객체를 사용한다.
✔︎ JSP에서는 session 내장 변수를 사용한다.
- 값을 저장할 때 : session.setAttribute()
- 값을 읽어 들일 때 : session.getAttribute()
- 실제 요청이 들어갔을 때, 클라이언트에 대한 정보를 알아야 한다. 그래야 이 session이 어떤 클라이언트 것인 줄 알아내야 하기 때문에 request가 setAttribute(), getAttribute()를 이용해 세션을 얻어낼 수 있다.
✔︎ 서블릿에서는 HttpServletRequest의 getSession()메소드를 이용하여 session 객체를 얻는다.
* Request Scope과 차이
- 하나의 요청이 들어왔을때들어왔을 때 생기는 것은 request scope이고 이는 브라우저 별로 생긴다. 그래서 어떤 요청이 들어왔을 때 응답을 받고 request, response 객체는 없어지지만 session 객체는 없어지지 않는다.
- session은 request보다 훨씬 오래 정보를 유지한다.
- 클라이언트가 계속 한 페이지를 요청하는 것이 아니라 다음에 또 요청하고 또 요청하는 상황일 때 사용할 수 있다.
참조
부스트코스 - 웹 프로그래밍 강의를 바탕으로 제작된 게시물입니다.
https://www.boostcourse.org/web316/lecture/16711?isDesc=false
'Web > Spring' 카테고리의 다른 글
스프링 프로젝트 환경설정 (0) | 2021.07.20 |
---|---|
Application Scope (0) | 2021.06.24 |
request scope (0) | 2021.06.24 |
Page scope (0) | 2021.06.24 |
Scope (0) | 2021.06.24 |