Spring expone el HttpServletRequest
objeto actual (así como el HttpSession
objeto actual ) a través de un objeto contenedor de tipo ServletRequestAttributes
. Este objeto contenedor está vinculado a ThreadLocal y se obtiene llamando al static
método RequestContextHolder.currentRequestAttributes()
.
ServletRequestAttributes
proporciona el método getRequest()
para obtener la solicitud actual, getSession()
para obtener la sesión actual y otros métodos para obtener los atributos almacenados en ambos ámbitos. El siguiente código, aunque un poco feo, debería llevarle el objeto de solicitud actual en cualquier lugar de la aplicación:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
Tenga en cuenta que el RequestContextHolder.currentRequestAttributes()
método devuelve una interfaz y es necesario convertirlo en el ServletRequestAttributes
que implementa la interfaz.
Spring Javadoc: RequestContextHolder | ServletRequestAttributes