Spring виставляє поточний HttpServletRequest
об'єкт (як і поточний HttpSession
об'єкт) через об'єкт- обгортку типу ServletRequestAttributes
. Цей об'єкт-обгортка прив'язаний до ThreadLocal і отримується шляхом виклику static
методу RequestContextHolder.currentRequestAttributes()
.
ServletRequestAttributes
забезпечує метод getRequest()
отримання поточного запиту, getSession()
отримання поточного сеансу та інші методи отримання атрибутів, що зберігаються в обох сферах. Наступний код, хоч і трохи потворний, повинен отримати вам поточний об'єкт запиту в будь-якому місці програми:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
Зверніть увагу, що RequestContextHolder.currentRequestAttributes()
метод повертає інтерфейс і його потрібно вводити до типу, ServletRequestAttributes
який реалізує інтерфейс.
Весняний Javadoc: RequestContextHolder | ServletRequestAttributes