<aside> 1️⃣ 세션
</aside>
HttpServletRequest 객체의 getSession() 메서드를 사용하여 세션을 가져올 수 있다.HttpSession 객체의 setAttribute() 메서드를 사용합니다. 예를 들어, **session.setAttribute("username", "John")**와 같이 호출하여 "username"이라는 속성을 설정할 수 있다.HttpSession 객체의 getAttribute() 메서드를 사용하여 세션 속성 값을 읽을 수 있다. 예를 들어, **String username = (String) session.getAttribute("username")**와 같이 호출하여 "username" 속성 값을 가져올 수 있다.setAttribute() 메서드를 사용하여 새 값을 설정하면 된다.web.xml 파일이나 Spring Boot의 설정 파일에서 세션 관련 설정을 수정할 수 있다.HttpSession 객체의 invalidate() 메서드를 호출하면 된다.HttpSession 객체의 isNew() 메서드를 사용할 수 있습니다. 이 메서드는 세션이 새로 생성되었는지 여부를 반환한다.HttpSession 객체의 getAttributeNames() 메서드를 사용하여 세션에 저장된 모든 속성의 이름을 확인할 수 있다.@SessionAttributes 어노테이션을 사용하여 특정 모델 속성을 세션에 저장하고 사용할 수 있다.Redis, Hazelcast, Apache Ignite 등과 통합할 수 있다.<aside> 2️⃣ 스프링부트를 사용할때 세션의 저장위치
</aside>
@RequestMapping("/login")
public String login(@RequestParam("user") String user, HttpServletRequest request) {
// 사용자 인증 로직이 있다고 가정
HttpSession session = request.getSession();
session.setAttribute("user", user);
return "loginSuccess";
}
HttpServletRequest**를 통해 세션에 접근하고, 로그인한 사용자의 이름을 세션에 저장하게 된다.<aside> 2️⃣ - 1️⃣ 스프링 부트 내장 톰켓의 세션설정
</aside>
Spring Boot**에서 기본적으로 내장 톰캣(Tomcat) 서버의 메모리를 세션 저장소로 사용하려면 다음과 같이 HttpSessionConfig 클래스를 작성할 수 있다:
import org.springframework.context.annotation.Configuration;
import org.springframework.session.config.annotation.web.http.EnableSpringHttpSession;
@Configuration
@EnableSpringHttpSession
public class HttpSessionConfig {
// 추가적인 설정이 필요한 경우 작성할 수 있음
}
@EnableSpringHttpSession**은 생략 가능한 애노테이션이다.
Spring Boot에서는 **@EnableSpringHttpSession**을 명시적으로 선언하지 않아도 내장 톰캣(Tomcat) 서버의 메모리를 세션 저장소로 사용하는 기본 설정이 적용된다.
따라서 **@EnableSpringHttpSession**을 생략해도 세션 관리를 위한 기능을 사용할 수 있다.@EnableSpringHttpSession 대신 해당 외부 저장소를 지원하는 애노테이션(예: @EnableRedisHttpSession, @EnableJdbcHttpSession)을 사용해야 한다.
이렇게 하면 Spring Session이 해당 외부 저장소를 세션 저장소로 사용하도록 설정된다.@EnableSpringHttpSession**은 기본 설정을 변경하려는 경우에 사용되며, 기본 설정을 그대로 사용하려는 경우에는 생략할 수 있다.<aside> 2️⃣ - 2️⃣ 스프링 세션을 사용한 Redis 설정
</aside>
Spring Session 프로젝트를 제공한다.Spring Session**은 세션 정보를 외부 저장소에 저장하고 관리한다. 이를 통해 서버 간에 세션 정보를 공유할 수 있고, 서버가 재시작되거나 실패해도 세션 정보가 유지된다. 사용할 수 있는 외부 저장소에는 Redis, JDBC, Hazelcast 등이 있다.