예제소스를 확인하고 넘어가보자
@GetMapping("/v2/session-home")
public String homeV2(
// Session이 필수값은 아니다. 로그인 했거나 안했거나 판별해야하니 required false
@SessionAttribute(name = Const.LOGIN_USER, required = false) UserResponseDto loginUser,
Model model
) {
// session에 loginUser가 없으면 Login 페이지로 이동
if (loginUser == null) {
return "session-login";
}
// Session이 정상적으로 조회되면 로그인된것으로 간주
model.addAttribute("loginUser", loginUser);
// home 화면으로 이동
return "session-home";
}
@SessionAttribute 어노테이션이 파라미터 내에 있어
해당 api 주소를 호출할 때 session에 저장이 되어 있는 값을 받아오게 된다.
코드를 볼때 중요한 부분은 return 값에 String으로 되어 있더라도 클래스 자체를 controller 어노테이션을 선언했기 때문에 html 파일이 반환된다.


위 두개의 화면을 보게 되면 Session에서 가지고 있는 사용자 정보를 재활용하는 것을 확인할 수 있다.
만료일을 별도로 지정하지 않았기 때문에 브라우저의 종료됨과 동시에 session도 종료된다.
참고
server.servlet.session.tracking-modes=cookie
server:
| servlet
|| session
||| tracking-modes : cookie
session.getId();
session.getMaxInactiveInterval();
session.getCreationTime();
ex) Sat Dec 9 15:40:23 KST 2024
session.getLastAccessedTime();
ex) Sat Dec 9 15:40:23 KST 2024
session.isNew();
교육 자료의 내용을 긁어온 부분이라 찾아보면 더 있을거 같다.
더 많은 정보는 따로 게시글을 작성할 예정이다.