Сервлет — это самостоятельный компонент программы, который согласно спецификации J2EE функционирует в Web-контейнере, динамически генерируя HTML страницу, XML документ или другой материал в ответ на полученный от клиента запрос. Как правило, такой запрос доставляется сервлету с использованием протокола HTTP. Сервлет является одним из видов "WEB-компонентов", а servlet engine — среда исполнения сервлетов -называется "WEB-контейнером". Сервлет можно рассматривать как серверный аналог аплета Java: и тот, и другой являются Java-программой, оба управляются своими контейнерами (аплет — браузером, сервлет — servlet engine), оба имеют строго определенный цикл жизни.
В общем случае, сервлет — это определенным образом построенный Java класс, не имеющий привязки к какой-либо конкретной платформе или Web-серверу. Сервлеты действуют как мост между бизнес-данными и интерфейсом Web-браузера. В частности, сервлеты используют для доступа к базам данных, программируя все удаленные операции с базой из браузера.
Взаимодействие сервлета с клиентом строится по стандартной схеме запрос-ответ. При этом сам сервлет непосредственно с клиентом не связывается, а в роли посредника, поддерживающего связь с удаленным клиентом, выступает Web-контейнер.
Для выполнения Java-сервлетов требуется установка на сервере Java Virtual Machine (JVM). Кроме того, сервер должен поддерживать Java Servlet API — набор функциональных команд для получения и отправления информации на сервер и с сервера. Технологию сервлетов можно использовать на любом web-сервере, имеющем соответствующую поддержку. С другой стороны, благодаря унификации языка Java, сервлеты можно переносить с одной платформы на другую без какой-либо перекомпиляции. Та же стандартизация подразумевает, что сервлетам всегда будет предоставлен доступ к определенному прикладному интерфейсу на любом сервере приложений. Например, они всегда будут иметь доступ к одной и той же библиотеке JDBC. Далее, использование объектно-ориентированного языка Java дает свободную расширяемость сервлетов. Например, Java класс сервлета контроллера может быть унаследован новым классом и дополнен функциями контроллера безопасности. При этом все старые функции контроллера сохранятся, но будут предоставлены уже по новой схеме безопасности.