[Diary] SPRING 스터디 Cookie & Session3

Shaun.the.sheep·2025년 7월 18일

[Dairy] S.C.C TIL

목록 보기
8/22

Session

  • @SessionAttribute
    • request.getSession(true); - 세션을 생성하는 기능
    • 이 어노테이션은 getSession과는 다르게 생성은 없지만 검색기능은 제공

예제소스를 확인하고 넘어가보자

    @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의 정보

  • session 정보
    1. session.getId();

      • jsessionId 값을 조회할 수 있다.
    2. session.getMaxInactiveInterval();

      • 세션의 유효시간
      • second 단위 default는 30분(1800초)이다.
    3. session.getCreationTime();

      • 세션 생성시간

      ex) Sat Dec 9 15:40:23 KST 2024

    4. session.getLastAccessedTime();

      • 해당 세션에 마지막으로 접근한 시간

      ex) Sat Dec 9 15:40:23 KST 2024

    5. session.isNew();

      • 새로 생성된 세션인지 여부

교육 자료의 내용을 긁어온 부분이라 찾아보면 더 있을거 같다.
더 많은 정보는 따로 게시글을 작성할 예정이다.

0개의 댓글