SpringMVC

[SpringMVC] SessionScope(1)

wookjae 2021. 9. 20. 00:16

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"

Session영역에 저장된 user_id 값 "kakasi" 확인. 

 

 

* Server Redirect요청 처리이후 (Session영역 Data확인)  

"/sessionScopeTest/test2" (Redirect요청) --> "/sessionScopeTest/result1"
Session영역에 저장된 user_id 값 "naruto" 확인. 

 

 

* Server Forward요청 처리이후 (Session영역 Data확인)  

"/sessionScopeTest/test3" (Forward요청) --> Server상의 코드흐름이동.. URL변경X
Session영역에 저장된 user_id 값 "sasuke" 확인. 

 

 

* 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