Позволяет писать (веб) серверный код, который работает на всех типах серверов приложений.Это минимальная база, на которой могут быть построены более высокоуровневые фреймворки.Я бы сказал, что это Java-эквивалент протокола CGI.
- Какие проблемы он пытается решить?
Определить стандартный интерфейс для обработки запросов, когда приложениеСервер управляет связью с пользователем, а сервлет реализует логику.
Основная идея заключается в том, что программист может сконцентрироваться на написании только сервлета, не беспокоясь о всем стеке HTTP и сервере (об этом заботится сервер приложений как пакетное решение).
Он пытается обрабатывать не только HTTP (например, запросы по электронной почте), что, возможно, немного перегружено (или, как правило, неудобно при регулярном использовании).
Удалось стать стандартом.Он был принят всеми поставщиками серверов приложений Java.Не существует соответствующих конкурирующих решений (может быть, некоторые собственные протоколы, но ничего кроссплатформенного).
- Разве API не забывает хорошие веб-методы, такие как архитектура REST?
API это не касается.Это работает на более низком уровне.TCP / IP также не интересуется хорошими веб-практиками.
- Что дает API, а не простой обработчик HTTP
Servlet API - это способ Javaделать простой обработчик HTTP.Там действительно не так много всего.Если вы просто не имеете в виду, что вы не имеете в виду управление жизненным циклом и конфигурацией.
Как еще вы могли бы написать «простой обработчик HTTP»?Если ваш ответ «начать с общедоступной статической void main, связать сокет прослушивания и перейти оттуда», то да, вам не нужен API сервлета.Но если вы хотите повторно использовать какие-либо стандартные инструменты или библиотеки, вам нужен некоторый API, с которым они все согласны (для инкапсуляции запросов и данных конфигурации и т. Д.).
Если вы привязываете себя к определенному HTTPСервер, вы можете написать код без сервлет API.Я думаю, что у Jetty, например, есть собственный интерфейс в качестве альтернативы javax.servlet.
Но, если серьезно, в API сервлетов нет ничего принципиально неправильного.