Java Servlet API - стандартизованный API для создания динамического контента к веб-серверу, используя платформу Java. Сервлеты - аналог технологий PHP, CGI иASP.NET. Сервлеты может сохранять информацию между многими транзакциями, используя HTTP кукиз, сессии или через редактирование URL.
Servlet API, содержащийся в пакете javax.servlet, описывает взаимодействие веб-контейнера и сервлета. Веб-контейнер - это компонент веб-сервера, который создан для взаимодействия с сервлета. Он отвечает за управление жизненным циклом сервлетов, преобразования URL в определенный сервлет и обеспечения того, чтобы клиент, который сделал URL запрос, имеет соответствующие права доступа.ъ
Стандарты и спецификации
Сервлеты, интерфейсы и базовые классы, протоколы работы с ними, рабочее окружение, описываются в соответствующих спецификациях компании Sun Microsystems.
Для облегчения разработки HTTP сервлетов, в спецификации описано абстрактный класс HttpServlet, от которого разработчикам предлагается наследовать свои сервлеты.
Схема работы и применения
-
Клиент (например, Веб-обозреватель ), посещает веб-страницу и отправляет HTTP запрос на сервер.
-
Web-сервер получает запрос и передает его контейнера сервлетов. Контейнер сервлетов может выполняться в том же процессе, что и веб-сервер, в отдельном процессе на той же системе, что и веб-сервер, или вообще в отдельном процессе на другой системе.
-
Контейнер сервлетов выясняет который сервлет следует вызывать, исходя из информации о конфигурации удерживаемых сервлетов, и вызывает его, передавая в качестве параметров объектные представления запроса и ответа.
-
Сервлет использует объект запроса для получения информации о удаленного пользователя, параметры HTTP запроса и т.д.. Сервлет выполняет запрограммированные в нем действия и отправляет результаты работы через объект ответа.
-
После того, как сервлет прекращает обработку запроса, контейнер сервлетов проверяет корректность отправки ответа, и возвращает управление в главное веб-сервера.
Сервлеты, также, используются в технологии JSP. Шаблоны страниц транслируются в исходные тексты Java-классов унаследованных от стандартных классов сервлетов. Java-компилятор компилирует эти исходные тексты в Java-байт кода. Полученные скомпилированные классы могут использоваться в сервлет-контейнере. Как правило, сервлет-контейнеры выполняют все эти вспомогательные действия автоматически.