Session ?
* Browser로 부터, 최초 서버에 요청발생 시, 해당 Browser에 관하여 하나의 메모리 영역을 서버에서 할당하게 된다.
* 이 메모리 영역은 Browser당 하나씩 할당되며, 이후 새로운 요청이 발생되더라도 같은 메모리 영역을 사용한다.
* 이러한 메모리 영역을 Session(세션) 이라 부른다.
* 이 영역은 Browser가 종료 될 때까지 서버에서 사용할 수 있다.
Session Scope ?
* SessionScope는 Browser 최초의 요청이 발생된 시점으로부터 해당 Browser를 닫을 때(종료) 까지의 유효범위 이다.
* SessionScope 에서는 Session 영역에 저장되어 있는 데이터와 객체를 자유롭게 사용할 수 있다.
SessionScope Exercise..
1. TestSessionScopeController 컨트롤러 생성
* Session영역은 HttpServletRequest객체로부터 추출하거나, 직접 HttpSession객체를 주입받아 사용할 수 있다.
* 최초요청 발생이후 다른 요청발생시, 같은 Browser에서 Session영역은 계속적으로 유지해서 사용할 수 있다. 브라우저가 종료 될 때까지 Session영역의 데이터를 유지 할 수 있다.
* Redirect / Forward 요청에 무관하게 세션에 저장된 데이터는 유지된다. 즉, 브라우저만 종료되거나 다른 브라우저로 바뀌지 않으면 Session영역의 데이터를 유지 할 수 있다.
2. SessionScopeController 테스트(1)
* Browser로 부터, 최초 서버에 (HTTP GET)요청발생 이후 재 요청 (Session영역 Data확인)
- 최초요청 : "/sessionScopeTest/test1"
- 재요청 : "/sessionScopeTest/result1"
* Server Redirect요청 처리이후 (Session영역 Data확인)
* Server Forward요청 처리이후 (Session영역 Data확인)
* Browser로 부터, 최초 서버에 (HTTP GET)요청발생 이후 재 요청 (Session영역 저장된 Object확인)
- 최초요청 : "/sessionScopeTest/test4"
- 재요청 : "/sessionScopeTest/result4"
3. TestSessionScopeController 컨트롤러 수정
* 세션영역에 저장된 객체("SessionBean") 사용시, HttpSession객체주입 이후 getAttribute("세션 저장된 객체이름"); 으로 사용대신, @SessionAttribute 어노테이션을 사용할 수 있다. @SessionAttribute 는 이전, 세션영역에 등록된 것을 불러오는 역할만 한다. 따라서, 최초에 세션영역에 데이터 저장할시, 세션을 주입받아서 세션영역에 직접적으로 저장해야 한다.
* Request영역에 저장되는 @ModelAttribute 통해 주입받는 Bean을 @SessionAttributes 어노테이션으로 지정할 시 Request영역이 아닌 Session영역에 저장하고 Session영역으로부터 Bean을 활용할 수 있다.
* Browser 최초요청 발생시, @SessionAttributes 어노테이션의 등록이름 "sessionBean2" 과 동한 sessionBean2() 메소드가 자동으로 호출이 되며, 해당메소드가 반환하는 객체의 주소값을 @ModelAttribute 어노테이션의 설정이름 "sessionBean2" 으로 Session세션영역에 저장된다. 해당 Session영역에 저장된 객체 활용시. test5() 메소드의 파라미터 @ModelAttribute("세션영역 저장이름") 클래스타입 변수이름 과 같이 선언하면 세션영역에 저장된 객체가 주입된다.
4. SessionScopeController 테스트(2)
* Browser로 부터, 최초 서버에 (HTTP GET)요청발생 이후 재 요청
(@SessionAttribute 설정 주입된 ["sessionBean2", "sessionBean3"] 객체 데이터 값 확인)
- 최초요청 : "/sessionScopeTest/test5"
- 재요청 : "/sessionScopeTest/result5"
exit..
'SpringMVC' 카테고리의 다른 글
[SpringMVC] ApplicationScope(1) (0) | 2021.10.11 |
---|---|
[SpringMVC] SessionScope Bean(2) (0) | 2021.10.04 |
[SpringMVC] RequestScope Bean(2) (0) | 2021.09.14 |
[SpringMVC] RequestScope(1) (0) | 2021.09.10 |
[SpringMVC] Server응답 처리방식(Redirect, Forward) (0) | 2021.09.08 |