Накратко, HttpServletRequest Request е API на сервлет, който предоставя обект за получаване на информация за HTTP заявка, инициирана от клиента.
Например:
- Вземете параметрите на заявката
- Вземете заглавката на заявката
- Вземете информация за сесията
- Получете IP адреса на заявката и друга информация
Така че въпросът е в Spring Boot какви са методите за получаване на обекта Request?
Има три често срещани начина за получаване на обекти на заявка:
- Получаване на обекта Request чрез параметрите на заявката;
- Получаване на обекта Request чрез RequestContextHolder;
- Получаване на Request обект чрез автоматично инжектиране.
Нека проучим това малко по-нататък.
1 . Получаване чрез параметър на заявка
@RequestMapping("/") @ResponseBody public void index(HttpServletRequest request){ // do something }
Логиката зад този метод е, че когато контролерът започне да обработва заявката, Spring ще присвои обекта Request към параметъра на метода и ние можем да получим обекта Request, като го настроим директно към параметъра.
2. Получаване чрез RequestContextHolder
@RequestMapping("/") @ResponseBody public void index(){ ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request = servletRequestAttributes.getRequest(); // do something }
В Spring Boot, RequestContextHolder
е клас инструмент, предоставен от Spring Framework за съхраняване и достъп до информация за контекста на заявката, свързана с текущата нишка в многонишкова среда.
Използва се главно за съхраняване на информация за текущата заявка в обхвата на нишката, така че тази информация да може да бъде споделена и достъпна в различни компоненти, особено ако не се предават параметри директно.
Основните роли на RequestContextHolder са следното:
- В уеб приложенията всяка заявка...