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:

  • Ein Browser oder Crawler fordert eine URL an.
  • Der Webserver übergibt die Anfrage an den Servlet-Container.
  • Der Container ermittelt anhand des URL-Mappings das zuständige Servlet.
  • Das Servlet verarbeitet Daten und Anwendungslogik.
  • Der Server sendet Statuscode, Header und Inhalt an den Client zurück.

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.

Ein Aufruf der URL /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:

Mit Nutzung dieses PageSpeed-Checks erklären Sie, dass Sie die Datenschutzerklärung zur Kenntnis genommen haben und damit einverstanden sind, dass die von Ihnen angegebenen Daten elektronisch erhoben und gespeichert werden. Ihre Daten werden dabei nur streng zweckgebunden zur Bearbeitung des PageSpeed-Checks benutzt. Mit der Nutzung dieses PageSpeed-Checks erklären Sie sich mit der Verarbeitung einverstanden.

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.

  • Gemeinsam verwendete Instanzvariablen: Parallele Anfragen können Werte überschreiben und falsche Nutzerdaten ausgeben.
  • Unpassende Statuscodes: Fehlerseiten oder Weiterleitungen werden als erfolgreiche Antwort mit Status 200 ausgeliefert.
  • Fehlende Zeichencodierung: Umlaute und Sonderzeichen erscheinen fehlerhaft, wenn Zeichensatz und Content-Type nicht zusammenpassen.
  • Unkontrollierte Parameter: Ungeprüfte Eingaben können zu ungültigen Abfragen oder Sicherheitslücken führen.
  • Sitzungsabhängige URLs: Session-IDs in URLs können zahlreiche Varianten desselben Inhalts erzeugen.
  • Offene Weiterleitungsziele: Übernommene URL-Parameter können Nutzer auf nicht geprüfte externe Ziele führen.
Ein Servlet sollte Nutzereingaben nie ungeprüft in HTML, Datenbankabfragen, Dateipfade oder Weiterleitungsziele übernehmen. Validiere Eingaben nach dem erwarteten Format und kodiere dynamische Ausgaben passend zum Zielkontext. Bei gemeinsam genutzten Instanzvariablen muss zusätzlich die parallele Verarbeitung mehrerer Anfragen berücksichtigt werden.

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?

Kontaktieren Sie uns

SEO Agentur kostenlose SEO Potentialanalyse


Weitere Inhalte