반응형
자바에서 값을 임시로 저장하기 위해 쿠키와 세션을 사용할 수 있다. 쿠키는 client에서 사용하고, session은 서버에서 사용하기 때문에 session이 보안적인 측면에서 좋다고 할 수 있다.
HttpServletRequest를 사용하여 session을 사용할때 service에서 세션을 사용하려면 파라미터로 request를 넘겨줘야 하는데
스프링 프로젝트 모든곳에서(service, dto 등) 세션을 사용하려면 RequestContextHolder를 사용하면 파라미터로 request를 넘겨주지 않아도 service에서 세션을 사용할 수 있다.
# RequestContextHolder를 사용하여 세션 set, get, remove하는 함수 구현
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
public class SessionScopeUtil {
public static Object getAttribute(String key){
return RequestContextHolder.getRequestAttributes().getAttribute(key, RequestAttributes.SCOPE_SESSION);
}
public static void setAttribute(String key, Object value){
RequestContextHolder.getRequestAttributes().setAttribute(key, value, RequestAttributes.SCOPE_SESSION);
}
public static void removeAttribute(String key){
RequestContextHolder.getRequestAttributes().removeAttribute(key, RequestAttributes.SCOPE_SESSION);
}
}
# 세션키를 설정하여 바로 세션 정보를 가져오기
public static final String SESSION_SAMPLE_KEY = "SESSION_SAMPLE";
public static SampleDto getSampleInfo() {
return (SampleDto)SessionScopeUtil.getAttribute(SESSION_SAMPLE_KEY);
}
public static void setSampleInfo(SampleDto obj) {
SessionScopeUtil.setAttribute(SESSION_SAMPLE_KEY, obj);
}
public static void removeSampleInfo() {
SessionScopeUtil.removeAttribute(SESSION_SAMPLE_KEY);
}
# 세션키를 전달하여 세션 정보를 가져오기
public static Object getSessionData(String key){
return SessionScopeUtil.getAttribute(key);
}
public static void setSessionData(String key, Object obj){
SessionScopeUtil.getAttribute(key, obj);
}
public static void removeSessionData(String key){
SessionScopeUtil.removeAttribute(key);
}
반응형
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 자바에서 로직 수행시간 성능 속도 체크하기 - StopWatch (0) | 2023.04.13 |
---|---|
[JAVA] 자바 request 정보 및 모바일 구분하기 (0) | 2023.04.07 |
[JAVA] 자바 인스턴스 멤버변수 값 가져오기 (0) | 2023.04.02 |
[JAVA] 자바 배열 예제 (0) | 2023.04.01 |
[JAVA] StringBuilder 사용 메소드 정리 (0) | 2023.03.28 |
댓글