Spring ujawnia bieżący HttpServletRequest
obiekt (jak również bieżący HttpSession
obiekt) przez obiekt opakowujący typu ServletRequestAttributes
. Ten obiekt otoki jest powiązany z ThreadLocal i jest uzyskiwany przez wywołanie static
metodyRequestContextHolder.currentRequestAttributes()
.
ServletRequestAttributes
zapewnia metodę getRequest()
pobierania bieżącego żądania, getSession()
pobierania bieżącej sesji i innych metod pobierania atrybutów przechowywanych w obu zakresach. Poniższy kod, choć nieco brzydki, powinien dostarczyć aktualny obiekt żądania w dowolnym miejscu aplikacji:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
Zwróć uwagę, że RequestContextHolder.currentRequestAttributes()
metoda zwraca interfejs i musi zostać zeskanowana do ServletRequestAttributes
tego, który implementuje interfejs.
Spring Javadoc: RequestContextHolder | ServletRequestAttributes