티스토리 뷰

Spring을 사용하면 Controller에서 Session을 가지고 오는것은 매우 간단하다. 하지만 Util에서 쉽게 Session 정보를 가지고 오고 싶을때는 어떻게 해야 할까? 바로 RequestContextHolder를 사용하는 방법이 있다. 

 

설정방법

일단 RequestContextHolder를 사용하기 위해서는 RequestContextListener가 필요하다. 이것을 설정하지 않으면 다음과 같은 오류가 발생하니 먼저 설정을 해주도록 하자. 

 

java.lang.IllegalStateException: No thread-bound request found 오류

XML로 설정되어 있던 spring web application context를 Java Config 로 변환하는 과정에 오류가 발생하였다. java.lang.IllegalStateException: No thread-bound request found: Are you referring to request at..

oingdaddy.tistory.com

@Bean
public RequestContextListener requestContextListener(){
    return new RequestContextListener();
}

이렇게 RequestContextListener 등록을 했다면 이제부터는 어디서든 RequestContextHolder를 이용해 Session, 정확히는 HttpServletRequest 정보를 가지고 와서 사용할 수 있다. 

 

사용법

사용법은 RequestContextHolder에 담겨있는 HttpServletRequest 정보를 꺼내서 사용하면 된다. 물론 Session도 이안에 있다. 

ServletRequestAttributes servletRequestAttribute = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
//Request 가지고 오기 
HttpServletRequest httpRequest = servletRequestAttribute.getRequest();
//Session 가지고 오기 
HttpSession httpSession = servletRequestAttribute.getRequest().getSession(true);

위와 같은 방식으로 현재의 Session 정보라던지 Request 정보를 가지고 올 수 있다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31