Servlet
Was ist ein Servlet?
Ein Servlet ist eine serverseitig ausgeführte Java-Komponente, die Anfragen von Clients verarbeitet und dynamische Webinhalte erzeugt. Meist nimmt ein Servlet HTTP-Anfragen entgegen, führt Anwendungslogik aus und liefert eine HTTP-Antwort zurück. Die Ausführung übernimmt ein Servlet-Container innerhalb eines Java-Webservers oder Application-Servers.
Ein Servlet gehört zur Java-Technologie für serverseitige Webanwendungen. Der englische Begriff bezeichnet eine kleine Serverkomponente. Browser führen den Java-Code nicht selbst aus. Stattdessen verarbeitet der Server die Anfrage und sendet beispielsweise HTML, JSON, eine Datei oder einen HTTP-Statuscode an den Client zurück.
Wie funktioniert ein Servlet?
Ein Servlet arbeitet innerhalb eines Servlet-Containers. Der Container ordnet eine angeforderte URL der passenden Java-Klasse zu, stellt Anfrage und Antwort als Objekte bereit und ruft die vorgesehene Verarbeitungsmethode auf. Die Anwendung liest daraus etwa URL-Parameter, Formularwerte, Header, Cookies oder Sitzungsinformationen und erzeugt anschließend die HTTP-Antwort.
Der typische Ablauf besteht aus fünf Schritten:
HTTP-Anfragen werden normalerweise über Methoden wie doGet() oder doPost() verarbeitet. doGet() eignet sich für abrufende Anfragen, während doPost() häufig Formulareingaben oder andere Datenänderungen entgegennimmt. Weitere Methoden wie doPut() und doDelete() kommen vor allem bei HTTP-basierten Schnittstellen zum Einsatz.
/produkte?id=42 kann an ein Servlet weitergeleitet werden. Das Servlet liest den Parameter id, lädt den Datensatz mit der Kennung 42 und erzeugt daraus eine HTML-Seite oder eine JSON-Antwort. Der Browser erhält nur das Ergebnis, nicht den ausgeführten Java-Code. Der Lebenszyklus eines Servlets
Der Servlet-Container steuert den Lebenszyklus über drei zentrale Methoden. init() wird nach der Instanziierung zur Initialisierung aufgerufen. service() verarbeitet eingehende Anfragen und verteilt HTTP-Aufrufe an Methoden wie doGet(). destroy() gibt vor dem Entfernen der Instanz belegte Ressourcen frei.
Ein verbreiteter Denkfehler besteht darin, für jede Anfrage automatisch eine neue Servlet-Instanz anzunehmen. Ein Container verwendet typischerweise dieselbe Instanz für mehrere Anfragen und kann diese gleichzeitig in unterschiedlichen Threads bearbeiten. Veränderliche Daten in Instanzvariablen können deshalb zwischen Nutzern vermischt werden. Anfragebezogene Werte gehören in lokale Variablen, Request-Attribute oder gezielt verwaltete Sitzungen.
Servlet und Servlet-Container
Ein Servlet ist die ausführbare Java-Komponente, während ein Servlet-Container die Laufzeitumgebung bereitstellt. Der Container verwaltet Instanzen, Threads, URL-Zuordnungen, Sicherheitsregeln, Sitzungen sowie die Request- und Response-Objekte. Ohne eine solche Umgebung kann eine Servlet-Klasse keine regulären HTTP-Anfragen verarbeiten.
Die Zuordnung einer URL kann über Annotationen oder eine XML-Konfiguration erfolgen. Eine Annotation wie @WebServlet("/suche") verbindet beispielsweise den Pfad /suche mit einer Klasse. Das Mapping sollte dauerhaft nachvollziehbar bleiben, weil Änderungen an öffentlich erreichbaren Pfaden Weiterleitungen und eine Aktualisierung interner Links erfordern.
Unterschied zu JSP und CGI
Der Unterschied zwischen Servlet und JavaServer Pages, kurz JSP, liegt im Schwerpunkt. Ein Servlet bildet Logik in einer Java-Klasse ab. Eine JSP-Datei ist stärker auf die Ausgabe von HTML ausgerichtet und wird vom Container intern in ein Servlet übersetzt. In klassischen Java-Anwendungen übernimmt das Servlet häufig die Steuerung, während eine JSP die vorbereiteten Daten darstellt.
| Technik | Hauptaufgabe | Ausführung |
|---|---|---|
| Servlet | Anfragen, Steuerung und serverseitige Logik | Im Servlet-Container |
| JSP | Erzeugung HTML-basierter Ansichten | Wird in ein Servlet übersetzt |
| CGI | Aufruf eines externen Programms pro Anfrage | Als separater Serverprozess |
| Java-Framework | Strukturierung umfangreicher Webanwendungen | Häufig auf Basis der Servlet-Technik |
Der Unterschied zwischen Servlet und CGI betrifft vor allem das Ausführungsmodell. CGI startet traditionell für eine Anfrage einen separaten Prozess. Ein Servlet bleibt innerhalb der Java-Laufzeit verfügbar und verarbeitet mehrere Aufrufe über die vom Container verwalteten Threads. Moderne Java-Webframeworks abstrahieren viele Details, greifen im Hintergrund jedoch häufig weiterhin auf die Servlet-Schnittstelle zurück.
Servlets und technische SEO
Für eine Suchmaschine ist nicht erkennbar, ob eine Seite durch ein Servlet, eine andere serverseitige Sprache oder eine statische Datei erzeugt wurde. Der Crawler bewertet die ausgelieferte HTTP-Antwort. Für die Onpage-Optimierung zählen deshalb der Statuscode, die Header, der HTML-Inhalt, die interne Verlinkung, die Ladezeit und die dauerhafte Erreichbarkeit der URL.
Ein technisch korrektes Servlet liefert für eine abrufbare Seite normalerweise den Statuscode 200. Dauerhaft verschobene Inhalte benötigen eine 301-Weiterleitung. Nicht vorhandene URLs sollten mit 404 oder bei dauerhaft entfernten Ressourcen gegebenenfalls mit 410 antworten. Eine optisch gestaltete Fehlerseite mit Statuscode 200 kann Suchmaschinen dagegen einen regulären Inhalt vortäuschen und die Indexierung unbrauchbarer URLs begünstigen.
Messbar ist die technische Ausgabe zum Beispiel mit einem SEO-Technik-Crawler. Prüfe dabei HTTP-Statuscodes, Weiterleitungsketten, Antwortzeiten, Canonical Tags und indexierbare Inhalte. Einen schnellen ersten Überblick über technische Fehler liefert außerdem der kostenlose SEO-Check.
Antwortzeit und Crawling prüfen
Ein Servlet kann eine Antwort erst senden, nachdem notwendige Berechnungen und Datenbankzugriffe abgeschlossen sind oder die Ausgabe schrittweise begonnen hat. Langsame Abfragen, blockierende externe Schnittstellen und fehlendes Caching erhöhen die Serverantwortzeit. Das betrifft Nutzer ebenso wie Suchmaschinen-Crawler und kann die Ladezeit dynamisch erzeugter Seiten verlängern.
Prüfe hier, wie schnell eine öffentlich erreichbare Servlet-Seite geladen wird:
Typische Fehler bei Servlets
Fehler entstehen häufig an der Grenze zwischen Anwendungscode und HTTP-Ausgabe. Ein Servlet kann fachlich korrekte Daten berechnen und trotzdem eine ungeeignete Antwort an Browser oder Crawler senden. Die Prüfung sollte daher sowohl den Java-Code als auch die tatsächlich ausgelieferte URL umfassen.
Servlets beim Website-Relaunch
Bei einem Relaunch kann eine veränderte Servlet-Konfiguration öffentlich erreichbare Pfade, Parameter oder Statuscodes beeinflussen. Erstelle deshalb vor dem Livegang eine Zuordnung alter und neuer URLs, teste Weiterleitungen außerhalb des Browsers und vergleiche die ausgelieferten Statuscodes. Die SEO-Checkliste für den Website-Relaunch hilft dabei, technische und inhaltliche Prüfschritte zu koordinieren.
Besondere Aufmerksamkeit benötigen URLs mit Parametern. Erzeugt ein Servlet für Sortierung, Filterung oder Sitzungen beliebig viele Varianten, können Suchmaschinen dieselben Inhalte unter zahlreichen Adressen finden. Begrenze indexierbare Varianten, verwende konsistente interne Links und liefere Canonical-Angaben nur dann aus, wenn sie zur tatsächlichen URL-Strategie passen.
Häufige Fragen zu Servlets
Ist ein Servlet ein Webserver?
Nein. Ein Servlet ist eine Java-Komponente innerhalb einer Webanwendung. Der Webserver oder Servlet-Container nimmt HTTP-Anfragen entgegen, verwaltet das Servlet und übermittelt dessen Antwort an den Client.
Kann ein Servlet HTML erzeugen?
Ja. Ein Servlet kann HTML direkt in die HTTP-Antwort schreiben. Bei umfangreichen Ansichten werden Darstellung und Anwendungslogik häufig getrennt, damit HTML-Vorlagen nicht vollständig im Java-Code gepflegt werden müssen.
Was ist der Unterschied zwischen doGet und doPost?
doGet verarbeitet normalerweise lesende GET-Anfragen, deren Parameter häufig in der URL stehen. doPost verarbeitet POST-Anfragen, bei denen Daten im Request-Body übertragen werden und die häufig eine Änderung auf dem Server auslösen.
Was ist ein Servlet-Container?
Ein Servlet-Container ist die Laufzeitumgebung für Servlets. Er verwaltet Lebenszyklus, URL-Mappings, Threads, Sitzungen sowie HTTP-Anfragen und HTTP-Antworten.
Sind Servlets threadsicher?
Servlets sind nicht automatisch threadsicher. Mehrere Anfragen können gleichzeitig dieselbe Instanz verwenden. Veränderliche Instanzvariablen müssen deshalb vermieden oder kontrolliert synchronisiert werden.
Werden Servlets heute noch verwendet?
Ja. Servlets bilden weiterhin eine technische Grundlage vieler Java-Webanwendungen. Entwickler arbeiten häufig über Frameworks, die Routing und Request-Verarbeitung vereinfachen und dabei intern auf der Servlet-Schnittstelle aufbauen.
Wenn du prüfen möchtest, ob dynamisch erzeugte Seiten technisch sauber ausgeliefert und von Suchmaschinen verarbeitet werden können, bietet ein unverbindlicher Potenzialcheck eine belastbare Ausgangsbasis.
Kostenlosen Potenzialcheck anfragen
Sie haben noch Fragen?







