Что такое сервлеты в Java и как они работают?

«Что такое сервлеты в Java и как они работают?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

**Сервлет** — это Java-класс, который обрабатывает HTTP-запросы и формирует ответы в рамках веб-приложения, работающего на сервере (например, Tomcat, Jetty). **Основные компоненты:** * Класс должен наследовать `javax.servlet.http.HttpServlet`. * Переопределяет методы для обработки HTTP-методов: `doGet()`, `doPost()`, `doPut()`, `doDelete()`. * Работает с объектами `HttpServletRequest` (запрос) и `HttpServletResponse` (ответ). **Пример простого сервлета:** ```java @WebServlet("/hello") // Объявление маппинга URL через аннотацию public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Устанавливаем тип контента ответа response.setContentType("text/html; charset=UTF-8"); // Получаем поток для записи ответа PrintWriter out = response.getWriter(); out.println("

Привет от сервлета!

"); // Можно читать параметры запроса String name = request.getParameter("name"); } } ``` **Конфигурация:** * **Современный способ:** Аннотация `@WebServlet` (требует Servlet API 3.0+). * **Классический способ:** Описание в файле `WEB-INF/web.xml`. **Контекст:** Сервлеты — это низкоуровневый компонент Java EE. В современных Spring-приложениях их напрямую не пишут, так как всю работу по маппингу запросов берет на себя **DispatcherServlet** фреймворка Spring MVC.