본문 바로가기

스프링/스프링 MVC

핸들러 메서드: @SessionAttributes, @SessionAttribute

Session은 여러 화면이나 여러 요청에서 사용해야 하는 객체를 공유할 때 사용할 수 있다,

HttpSession사용

HttpSession을 사용하여 직접 session을 추가할 수 있다.

 

테스트를 통해 세션정보를 확인해보면 세션이 정상적으로 저장된 것을 알 수 있다.

@SessionAttributes

- HttpSession보다 조금 더 추상화된 방법으로 아래와 같이 @SessionAttributes를 사용한다.

model.addAttribute의 attributeName이랑 @SessionAttributes의 괄호 안의 값이 같으면 model에 추가될 때 자동으로 세션으로 넣어준다.

​위와 동일한 테스트를 돌려보면 결과가 똑같은 것을 알 수 있다.

세션 처리

이렇게 추가한 세션을 @ModelAttribute를 통해 바인딩하여 받을 수 있다. 그리고 이 세션을 처리하고 싶을 때 SessionStatus를 이용하여 setComplete()를 호출하면 세션이 제거되어 세션을 처리할 수 있다.


위에서 사용한 @SessionAttributes와 다르다.

@SessionAttributes

 - 해당 컨트롤러 내에서만 동작.

 - 즉, 해당 컨트롤러 안에서 다루는 특정 모델 객체를 세션에 넣고 공유할 때 사용. 

@SessionAttribute

 - 컨트롤러 밖(인터셉터 또는 필터 등)에서 만들어 준 세션 데이터에 접근할 때 사용한다.

 

방문 시간 세션을 생성하고 확인해보자.

우선 방문 시간 세션을 생성하기 위해 Interceptor를 하나 만든다.

 

WebConfig에 Interceptor를 추가해준다.

세션 값 받아오기

1. HttpSession 사용

2. @SessionAttribute 사용

 

위의 두 가지 방법 모두 정상적으로 작동된다. 하지만 HttpSession은 따로 형변환이 필요하고 @SessionAttribute는 간단하게 사용할 수 있다.

 


 

스프링 웹 MVC - 인프런

이 강좌는 자바 서블릿(Servlet) 기반의 MVC 프레임워크인 스프링 웹 MVC(이하 스프링 MVC)에 대해 학습합니다. 중급 웹 개발 프레임워크 및 라이브러리 Spring Java MVC 온라인 강의

www.inflearn.com