간혹, Controller나 Service가 아닌 Class에서 Session 또는 Request 객체를 사용해야할 일이 생깁니다.
그렇다고, 그 Class에 HttpServletRequest 파라미터를 새로 정의하면, 이를 사용하는 Service와 Controller를 차례로 손을 봐야 하죠.
Spring framework를 사용한다면, 간단하게 이 문제를 해결할 수 있습니다.
RequestContextHolder가 바로 그 것인데요.
이것을 사용하기 위해서는 web.xml에 아래와 같이 기술해 줘야 합니다.
<listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener>
그런 다음, 아래와 같이 Request 객체와 Session 객체를 얻을 수 있습니다.
public class SessionUtils { public void setAttribute(String key, Object value) { HttpServletRequest request =((ServletRequestAttributes)RequestContextHolder .getRequestAttributes()).getRequest(); HttpSession session = request.getSession(true); : } }
맘에 드네요. ^^;