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
'Back-end > Spring-핵심& webMVC' 카테고리의 다른 글
Spring 예외 처리 전략 및 Global 예외처리 // @RestControllerAdivce (0) | 2023.01.03 |
---|---|
Spring - 인터셉터 (0) | 2023.01.01 |
Jsp- jstl (0) | 2023.01.01 |
Spring MVC <component-scan>, <annotation-config>, <annotation-driven> (0) | 2022.12.30 |
Web.xml, DispatcherServlet, ContextLoaderListener 각각의 역할 및 관계 (0) | 2022.12.30 |