Накратко, HttpServletRequest Request е API на сервлет, който предоставя обект за получаване на информация за HTTP заявка, инициирана от клиента.

Например:

  1. Вземете параметрите на заявката
  2. Вземете заглавката на заявката
  3. Вземете информация за сесията
  4. Получете IP адреса на заявката и друга информация

Така че въпросът е в Spring Boot какви са методите за получаване на обекта Request?

Има три често срещани начина за получаване на обекти на заявка:

  1. Получаване на обекта Request чрез параметрите на заявката;
  2. Получаване на обекта Request чрез RequestContextHolder;
  3. Получаване на 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 са следното:

  1. В уеб приложенията всяка заявка...