Contents
Servlet으로 Session 사용하기 - Spring
   Apr 15, 2023     2 min read

서블릿 HTTP 세션 2

⚓️서론

스프링을 이용하여 세션을 쉽게 관리해보자.

어노테이션을 통해서 쉽고 간단히 세션을 처리하는 방법을 배워보자.


@SessionAttribute

스프링은 세션을 더 편리하게 사용할 수 있도록@SessionAttribute 을 지원한다.

  • HomeController - homeLoginV3Spring()
/**
 * 스프링에서 지원하는 세션 방법 -> @SessionAttribute
 *
 * @param loginMember
 * @param mode
 * @return
 */
    @GetMapping("/")
    public String homeLoginV3Spring(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model){

        //세션에 회원 데이터가 없으면 home
        if (loginMember == null) {
            return "home";
        }

        //세션이 유지되면 로그인으로 이동
        model.addAttribute("member", loginMember);
        return "loginHome";
    }
}
  • 이미 로그인 된 사용자를 찾을 때는 다음과 같이 사용하면 된다.
@SessionAttribute(name = "loginMember", required = false) Member loginMember

TrackingModes

처음 로그인시 URL 끝에 JSESSIONID가 붙어 있다.

Untitled

이것은 웹 브라우저가 쿠키를 지원하지 않을 때 쿠키 대신 URL을 통해서 세션을 유지하는 방법이다.

이 방법을 사용하려면 URL에 이 값을 계속 포함해서 전달해야한다.

  • 타임리프 같은 템플릿 엔진을 통해서 링크를 걸면 jsessionid 를 URL에 자동으로 포함해준다.
  • 서버 입장에서 웹 브라우저가 쿠키를 지원하는지 하지 않는지 최초에는 판단하지 못하므로, 쿠키 값도 전달하고 URL에 jsessionid 도 함께 전달한다.

URL 전달 방식을 끄고 항상 쿠키를 통해서만 세션을 유지하고 싶으면 다음 옵션을 넣어주면 된다.

  • application.properties
server.servlet.session.tracking-modes=cookie

📎참고