Gymterview
middle

Какие основные особенности появились в спецификации Servlet 3

Servlet 3.0 (JSR 315, 2009) — значительное обновление спецификации, которое устранило необходимость в web.xml для типовых сценариев и добавило поддержку асинхронной обработки.

Ключевые нововведения

Особенность Описание
Аннотации @WebServlet, @WebFilter, @WebListener, @WebInitParam — конфигурация без web.xml
Web Fragments Модульность: каждый JAR может содержать META-INF/web-fragment.xml со своими сервлетами и фильтрами
Динамическая регистрация ServletContext.addServlet(), addFilter(), addListener() — программное добавление компонентов
Асинхронная обработка AsyncContext позволяет передать обработку в другой поток, освободив поток контейнера

Асинхронная обработка (пример)

Пример
@WebServlet(urlPatterns = "/async", asyncSupported = true)
public class AsyncServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        AsyncContext ctx = req.startAsync();
        ctx.start(() -> {
            // долгая операция в отдельном потоке
            ctx.complete();
        });
    }
}

Асинхронность критически важна для высоконагруженных приложений: вместо блокировки потока контейнера на время I/O-операции, поток освобождается для обработки других запросов. В Spring MVC аналог — DeferredResult и CompletableFuture.

На собеседовании: важно упомянуть все четыре нововведения. Частая ошибка — назвать только аннотации и забыть про асинхронность, которая является архитектурно значимым изменением.