Základní struktura servletů

Servlet ve své nejobecnější formě je instance třídy, která implementuje javax.servlet.Servlet interface. Většina servletů je potomkem jednoho ze standardních implementací tohoto interfacu, jmenovitě javax.servlet.GenericServlet a javax.servlet.http.HttpServlet.

Při inicializaci servletu načte server třídu servletu (a ostatní odkazované třídy) a vytvoří instanci voláním bezparametrového konstruktoru. Následně zavolá metodu servletu init(ServletConfig config). Servlet při vykonávání této metody uloží ServletConfig objekt, který bude dostupný metodou getServletConfig(). Toto vše je obstaráno GenericServletem. Servlety, které jsou potomky GenericServletu (nebo jeho podtřídy HttpServlet) by měli volat super.init(config) na začátku metody init. Vzniklý objekt ServletConfig obsahuje parametry servletu a odkaz na ServletContext obsahující runtime environment informace. Metoda init je v životním cyklu servletu volána pouze jednou.

Poté co je servlet inicializován, je jeho metoda service(ServletRequest req, ServletResponse res) volána pro každý požadavek na servlet. Tato metoda je volána souběžně (např. multiple threads mohou volat tuto metodu ve stejný okamžik) a tudíž je nutné, aby byla implementována jako thread-safe.

V případě potřeby odstranění servletu z paměti (např. z důvodu nahrání nové verze nebo vypínaní serveru) je volána metoda destroy().

Obrázek 4. Životní cyklus servletu

Životní cyklus servletu