Ответ
Spring, и в частности Spring MVC, построен поверх Java Servlet API, но предоставляет высокоуровневую абстракцию, которая скрывает низкоуровневую работу с сервлетами от разработчика.
Ключевые моменты:
- Центральный сервлет:
DispatcherServlet— это единственный сервлет, который обрабатывает все входящие HTTP-запросы в Spring MVC приложении. Он действует как front controller. - Абстракция: Вместо написания собственных сервлетов разработчик создает контроллеры с аннотациями (
@RestController,@GetMapping), которыеDispatcherServletнаходит и вызывает.
Конфигурация DispatcherServlet (традиционное веб-приложение):
<!-- web.xml -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Spring Boot: Конфигурация DispatcherServlet регистрируется автоматически. Разработчик пишет только контроллеры:
@RestController
public class ExampleController {
@GetMapping("/api/data")
public ResponseEntity<Data> getData() {
// DispatcherServlet маршрутизирует сюда запросы на GET /api/data
return ResponseEntity.ok(new Data());
}
}
Вывод: Servlet API — это фундамент, но Spring инкапсулирует его, предлагая более удобную модель программирования.