<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 등이 있다.