Back-end/Spring-핵심& webMVC

SessionStatus, @SessionAttributes, @SessionAttribute

prden 2023. 1. 1. 13:44

1.SessionStatus란 

SessionStatus는 @SessionAttributes를 활용해 Session에 남긴 데이터를 정리하는데 활용을 하는 인터페이스이다.

model.addAttribute("dutch", "hello");

일반적으로 위 코드 처럼 "dutch" 라는 키로 model에 세팅하면

응답 이후 값이 삭제 된다. 하지만 

컨트롤러 클래스 상단에  @SessionAttribues 를 세팅 후 사용한다면 동작이 변경되게 된다.

@RequestMapping("dutch")
@Controller
@SessionAttributes("dutch")
public class DutchController

@SessionAttributes선언 후 model.addAttribute 를 호출한다면 해당 key,value가 Session에 저장 되고,

다음 요청이 동일 세션으로 왔을때 session의 Key를 "dutch"로 조회하면 addAttribute값이 존재하는것을 볼 수 있다. 그리고 model을 통해 "dutch"를 조회했을때도 값이 존재하는것을 확인 할 수 있다.

 

2. @SessionAttributes - 컨트롤러 최상단에 선언(@Controller와 함께)

모델 정보를 HTTP 세션에 저장해주는 애노테이션이다. HttpSession을 직접 사용할 수도있지만, 이 애노테이션을 사용하면 모델 정보를 자동으로 세션에 넣어준다. @ModelAttribute는 세션에 있는 데이터도 바인딩 한다.

여러 화면(또는 요청)에서 사용해야하는 객체를 공유할 때 사용한다. 

각각의 메소드에서 메소드 아규먼트로 SessionStatus를 선언 하고 해당 메소드에서 session.setComplete();로 session에 있는 값 clear

 

3. @SessionAttribute

@SessionAttributes는 해당 컨트롤러 내에서만 동작한다. 즉, 해당 컨트롤러 안에서 다루는 특정 모델 객체를 세션에 넣고 공유할 때 사용한다. 반면 @SessionAttribute는 컨트롤러 밖(인터셉터 또는 필터 등)에서 만들어 준 세션 데이터에 접근할 때 사용한다. 

 

https://meteorkor.tistory.com/14

 

[Spring] SessionStatus는 어떻게 동작할까?

Spring MVC 에서 SessionStatus 라는것이 존재합니다. (현재는 대부분의 서비스회사들이 Session을 사용하지 않기 때문에 사용하지 않는 회사들은 무의미 할수 있겠네요) SessionStatus는 @SessionAttributes를 활

meteorkor.tistory.com