-
@SessionAttributesSpring/Spring MVC 2020. 6. 16. 10:30
- 어떤 정보를 세션에 넣고 싶다면 HttpSession을 받아서 사용할 수 있다.
- @SessionAttributes를 쓴다면 세션에다 넣지 않아도 HttpSession을 쓰지 않아도 자동으로 넣어준다.
- 이때 이 어노테이션에 설정한 이름에 해당하는 모델 정보를 세션에 넣어주게 된다.
- @ModelAttribute는 세션에 있는 데이터도 바인딩할 수 있다.
그렇다면 왜 모델 에트리뷰트를 세션에다 넣게 될까?
1. 여러 페이지에 걸친 장바구니 데이터
2. 데이터 생성 시 여러 화면에 걸쳐서 만들어야 하는 경우
- SessionStatus를 통해 메서드 아규먼트로 받아서 사용하게 된다.
- 특정 form 처리가 끝나면 세션이 만료되도록 할 수 있다.
- @ModelAttribute, @SessionAttribute, SessionStatus를 활용해서 해당 정보를 여러 Form에 걸쳐 받아보자.
1.
- 모델에 저장되는 Hello 객체가 세션에 들어가게 된다.
2.
- 즉 뷰에서 사용한 name이 바뀐 세션에 넣어놨던 hello 객체가
- @ModelAttribute Hello hello에 담기게 된다.
- 정상적으로 처리가 된다면 이제 id를 지정하기 위한 view로 이동하게 된다.
3.
- 이제 hello 객체에는 name값은 이미 변환이 됐고 id값이 변환된 객체가 담기게 된다.
- 별다른 에러가 없다면 sessionStatus.setComplete로 세션을 삭제하고 list view로 가게 될 것이다.
4.
- DB에서 불러온 후에 /hello/list에 model을 실어 보내면 응답을 확인할 수 있는 구조이다.
- 물론 이와 같이 하지 않고 model에 계속해서 전달하는 식으로 해도 된다.
'Spring > Spring MVC' 카테고리의 다른 글
RedirectAttributes (0) 2020.06.22 @ModelAttribute과 BindingResult (0) 2020.06.11 요청 매개변수를 메소드 아규먼트로 받아오는 방법 (0) 2020.06.09 핸들러 메소드 URI 패턴 (0) 2020.06.09 스프링MVC 핸들러 아규먼트와 리턴타입 살펴보기 (0) 2020.06.08