Servlets sind in Java geschriebene Module, die Request-/Response-orientierte Server (in der Regel Java-fähige HTTP-Server) erweitern. Sie ersetzen meist die klassischen CGI-Perl-Scripts, die in vielen Servern für eine Dynamisierung von HTML-Informationsangeboten genutzt werden. Servlets werden heute in allen wichtigen Web-Servern mit dem gleichen, standardisierten API unterstützt.
Während der Servlet-Programmierer immer gegen das gleiche Java-API programmiert, sind die dazu verwendeten Servlet-Klassen so angelegt, dass sie die schnellste Schnittstelle des Webservers benutzen (z.B. NSAPI, ISAPI).
Ein Vorteil von Servlets gegenüber CGI-Lösungen ist ihre Eigenschaft, mit dem Start des Webservers geladen und initialisiert werden und resistent im Speicher bleiben zu können. Im Gegensatz dazu müssen CGI-Lösungen (außer Fast-CGI) immer neu gestartet werden und können daher z.B. keine Datenbankverbindungen halten.
Es gibt verschiedene Servletprodukte auf dem Markt, die vor allem Unterschiede bzgl. der folgenden Kriterien aufweisen:
- dynamisches Neuladen von modifizierten Servlets ohne Server-Stopp,
- Servlet-Chaining und -Filtering,
- Multi-Homing-Support (Virtual Server),
- SERVLET-Tag-Support,
- Taglet-Support,
- Administrationsunterstützung.
Servlets können auf ganz verschiedene Art und Weise aufgerufen werden:
- direkt über eine URL,
- über ein Servlet-Tag in einer dynamischen HTML-Seite,
- über ein Taglet,
- über eine Java Server Page (JSP).
Außerdem unterscheidet man Servlets, die:
- bei Start des Servers geladen und nicht mehr aus dem Speicher entfernt werden,
- beim Aufruf der URL geladen werden und eine definierbare Zeit im Speicher verbleiben.