Сървлет (Java)

Servletе Java интерфейс, чиято реализация разширява функционалността на сървъра. Сървлетът взаимодейства с клиентите чрез принципа заявка-отговор.

Въпреки че сървлетите могат да обслужват всяка заявка, те обикновено се използват за разширяване на уеб сървъри. За такива приложения технологията Java Servlet дефинира специфични за HTTP класове на сервлети.

Пакетите javax.servlet и javax.servlet.http предоставят интерфейси и класове за изграждане на сървлети.

Съдържание

Хронология на API за сервлетиПромени в ключа на платформата за издаване на версия на API на сервлет
Сървър 4.0септември 2017 гJavaEE 8HTTP/2 натискане на сървъра
Сървлет 3.1май 2013 г. (английски)JavaEE7 JavaSE7Неблокиращ I/O, поддръжка за нестандартни протоколи през HTTP
Сървър 3.0декември 2009 гJavaEE6, JavaSE6Възможност за включване, лекота на разработка, асинхронни сървлети, сигурност, качване на файлове
Сървър 2.5септември 2005 гJavaEE 5, J2SE 5.0Изисква J2SE 5.0, поддръжка на пояснения
Сървър 2.4ноември 2003 гJ2EE 1.4, J2SE 1.3web.xml използва XML схема
Сървър 2.3август 2001 гJ2EE 1.3, J2SE 1.2Появата на филтъра
Сървър 2.2август 1999 гJ2EE 1.2, J2SE 1.2Става част от J2EE, предлага независими уеб приложения в .war файлове
Сървър 2.1ноември 1998 гнеопределеноПърва официална спецификация, добавен RequestDispatcher, ServletContext
Сървър 2.0JDK 1.1Част от Java Servlet Development Kit 2.0
Сървър 1.0юни 1997 г

Жизненият цикъл на сървлета се състои от следните стъпки:

  1. В случай, че в контейнера няма сервлет.
  1. Класът сървлет се зарежда от контейнера.
  2. Контейнерът създава екземпляр на класа сервлет.
  3. Контейнерът извиква метода init(). Този метод инициализира сървлета и се извиква първо, преди сървлетът да може да обслужва заявки. Методът init() се извиква само веднъж през целия жизнен цикъл.
  • Обслужване на заявка на клиент. Всяка заявка се обработва в отделна нишка. Контейнерът извиква метода service() за всяка заявка. Този метод определя типа на входящата заявка и я разпределя към метода, съответстващ на този тип за обработка на заявката. Разработчикът на сървлета трябва да осигури изпълнение за тези методи. Ако се получи заявка, за която не е имплементиран метод, методът на родителския клас се извиква и обикновено завършва с връщане на грешка на заявителя.
  • Ако контейнерът трябва да изтрие сървлета, той извиква метода destroy(), който деактивира сървлета. Подобно на метода init(), този метод също се извиква веднъж на цикъл на сервлета.