ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @SessionAttributes
    Spring/Spring MVC 2020. 6. 16. 10:30

     

    • 어떤 정보를 세션에 넣고 싶다면 HttpSession을 받아서 사용할 수 있다.

     

     

     

    • @SessionAttributes를 쓴다면 세션에다 넣지 않아도 HttpSession을 쓰지 않아도 자동으로 넣어준다.
    • 이때 이 어노테이션에 설정한 이름에 해당하는 모델 정보를 세션에 넣어주게 된다.
    • @ModelAttribute는 세션에 있는 데이터도 바인딩할 수 있다.

     

     

    그렇다면 왜 모델 에트리뷰트를 세션에다 넣게 될까?

     

    1. 여러 페이지에 걸친 장바구니 데이터

     

    2. 데이터 생성 시 여러 화면에 걸쳐서 만들어야 하는 경우

     

    • SessionStatus를 통해 메서드 아규먼트로 받아서 사용하게 된다.
    • 특정 form 처리가 끝나면 세션이 만료되도록 할 수 있다.

     


     

    • @ModelAttribute, @SessionAttribute, SessionStatus를 활용해서 해당 정보를 여러 Form에 걸쳐 받아보자.

     

     

    1.

    • 모델에 저장되는 Hello 객체가 세션에 들어가게 된다.

     

     

     

    /hello/form-name.html

    2.

    • 즉 뷰에서 사용한 name이 바뀐 세션에 넣어놨던 hello 객체가
    • @ModelAttribute Hello hello에 담기게 된다.
    • 정상적으로 처리가 된다면 이제 id를 지정하기 위한 view로 이동하게 된다.

     

     

     

    /hello/form/id.html

     

     

    3.

    • 이제 hello 객체에는 name값은 이미 변환이 됐고 id값이 변환된 객체가 담기게 된다.
    • 별다른 에러가 없다면 sessionStatus.setComplete로 세션을 삭제하고 list view로 가게 될 것이다.

     

     

    4.

    • DB에서 불러온 후에 /hello/list에 model을 실어 보내면 응답을 확인할 수 있는 구조이다.

     

     

     

    • 물론 이와 같이 하지 않고 model에 계속해서 전달하는 식으로 해도 된다.

     

Designed by Tistory.