본문 바로가기
스프링

[Spring] 세션(Session) 그리고 로그인

by 이페코장인 2024. 3. 25.

세션이란?

HTTP에서 통신을 할 때, 사용자(client)와 서버간 요청과 응답 등으로 데이터를 주고 받게 된다. 이 때, 연결이 끊어진 이후에도 사용자에 대한 정보를 기억하기 위해 서버에서 데이터를 보관하는 방법이 세션(session)이고, 사용자 측에서 데이터를 보관하는 방법이 쿠키(Cookie)이다. 

 

 

스프링-lombok에서 세션 어노테이션

스프링-lombok에서 세션을 사용하기 위해 다음 어노테이션을 주로 사용한다.

// loginMember는 세션에 저장된 속성값으로 처리된다는 의미
@SessionAttributes("loginMember")
public class TestController {

@GetMapping("/")
public String test1 (Model model,
	// 세션에 있는 속성값 중 "loginMember"라는 이름을 가진 값을 이 메소드에서 사용하겠다는 의미
	@SessionAttribute(name = "loginMember", required = false) Member loginMember
    )
	return "test";
}

 

 

세션의 메소드

또한 세션 객체를 생성/호출해서 메소드를 사용할 수 있다.

// 세션 객체 생성
// 사용자가 보낸 세션 ID값이 있으면 관련 객체 호출. 없으면 새 객체 생성
HttpSession session = HttpServletRequest.getSession();

// 세션에 "test"라는 속성이름으로 10이라는 속성값을 설정
session.setAttribute("test", 10);
// "test"라는 이름의 속성의 값을 호출
session.getAttribute("test");
// 세션 유지시간 설정
session.setMaxInactiveInterval(숫자);
// 세션에 등록된 속성들의 이름들 조회
seesion.getAttributeNames();
// 세션에 저장된 속성과 값 삭제
session.removeAttribute("test");
// 현 세션 삭제
session.invalidate();