본문 바로가기

좋아하는 것_매직IT/1.spring

15.Spring, 스프링MVC의 핵심개념 중 세션속성(SessionAttribute)에 대해서 알아볼께요.

반응형

스프링MVC의 핵심개념인 세션 속성에 대해서 알아보자.

  • 먼저, 세션 속성이 필요한 이유는?
    • 특정 웹 사용자에 대해서 환경설정과 같은 요청 간 변경되지 않는 값들이 존재할 수 있는데, 보통 이런 값은 HTTP 세션에 저장됨.
  • 그럼, 스프링MVC에서 세션을 위해 지원하는 어노테이션은 무엇일까?
    • 정답
      • @SessionAttributes
        • 부연설명하자면, 세션에 저장되는 속성을 지정하는 클래스 레벨의 어노테이션임.
        • 컨트롤러 메소드가 생성하는 모델 정보 중에서 @SessionAttributes에 지정한 이름과 동일한 이름이 있다면, 이를 세션에 저장해 줌.
        • SessionAttributes을 담은 객체는 SessionStatus의 setComplete()를 호출해 주기 전까지는 계속 담겨있음. 
      • 예시

  • 설명
    • SessionAttributes 어노테이션을 위와 같이 정의하면,
      • 동일한 속성이 Model에 추가되는 경우 세션에 자동으로 추가됨.
    • 그럼, 아래에서 세션에 속성을 추가/읽기/삭제에 대해서 자세하게 알아보자.

우선, 세션에 속성을 추가하는 방법을 알아보자

  • 예시

  • 설명
    • thubUserSessionAttribute의 이름의 속성을 Model에 추가하면, 세션 대화 상태로 자동 저장됨.

그럼, 세션에 속성을 읽는 방법을 알아보자

  • 예시

​​​​​​​설명

  • 위와 같이, @SessionAttributes 어노테이션을 타입 레벨에서 지정하면, 다른 컨트롤러에서 액세스가 가능함.
  • 아래와 같이 엑세스 가능함.
    • 예시

마지막으로, 세션에 속성을 삭제하는 방법을 알아보자

  • 세션에서 값을 제거하는 방법은 아래 2가지가 있다.
    • 첫째, removeAttribute 메소드 사용.
    • 둘째, cleanUpAttribute 메소드 사용.

첫번째, removeAttribute 메소드 사용 예시

두번째, cleanUpAttribute 메소드 사용 예시

결론

  • 스프링MVC에서 세션을 위해 지원하는 @SessionAttributes 어노테이션이 존재함.
    • 부연설명하자면, 세션에 저장되는 속성을 지정하는 클래스 레벨의 어노테이션임.
  • 세션의 속성을 추가, 읽기, 제거 하는 메소드를 지원함.
  • 오늘도 스프링MVC관련 세션속성에 대한 지식 마술(?) 한가지 획득완료! 감사합니다. ^^
300x250