Servlet

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Als Servlets bezeichnet man Java-Klassen, deren Instanzen innerhalb eines Webservers Anfragen von Clients entgegennehmen und beantworten. Der Inhalt der Antworten kann dabei dynamisch, also im Moment der Anfrage, erstellt werden und muss nicht bereits statisch (etwa in Form einer HTML-Seite) für den Webserver verfügbar sein. Servlets stellen somit das Java-Pendant zu CGI-Skripten oder anderen Konzepten dar, mit denen dynamisch Web-Inhalte erstellt werden können (PHP, Ruby on Rails, Active Server Pages etc.).

Servlets sind eigentlich Teil der Java-EE-Technologie, es gibt aber auch unabhängig davon Webserver, die einen Servlet-Container enthalten (z. B. Apache Tomcat, Jetty). Servlet-Container sind fester Bestandteil aller Java-EE-Anwendungsserver.

Verwendung[Bearbeiten]

Ein Servlet wird implementiert, indem eine Klasse erstellt wird, die die Schnittstelle javax.servlet.Servlet implementiert. Es gibt die Klasse javax.servlet.http.HttpServlet, die diesen Vorgang vereinfacht. Anschließend wird eine oder beide Methoden doGet und doPost überschrieben, um die beiden wichtigsten HTTP-Methoden GET und POST verarbeiten zu können. Häufig wird auch nur die Methode service überschrieben, welche unabhängig vom HTTP-Befehl aufgerufen wird. Um das Servlet auf dem Web-Server nutzen zu können, müssen Metainformationen bereitgestellt werden. Diese Metainformationen werden hinterlegt in einer XML-Datei namens web.xml, dem sogenannten Deployment Descriptor. Der Deployment Descriptor wird zusammen mit der kompilierten Servlet-Klasse (sowie ggf. weiteren benötigten Klassen) in einer Archiv-Datei, dem Web-Archiv, zusammengeführt. Dieses Web-Archiv wird dem Servlet-Container über eine von ihm bereitgestellte Funktionalität übergeben (deployment). Zur Laufzeit greift der Webserver auf den Servlet-Container zu, der wiederum eine Instanz des Servlets erzeugt und die entsprechende Methode startet.

Häufig werden in einem Servlet sowohl Parameter der Anfrage als auch Sitzungsdaten verwendet, um zum Beispiel eine personalisierte Antwort zu erzeugen oder Daten auf dem Server zu speichern oder zu verändern. Die Antworten können neben Text (zum Beispiel HTML oder XML) auch Bilder oder andere Binärdateien sein.

Servlets werden oft nach dem Entwurfsmuster Model View Controller (MVC) in Form von JavaServer Pages verwendet, wobei die JSP die View repräsentiert. Frameworks wie z. B. Spring MVC oder Struts vervollständigen dabei das MVC-Muster.

Begriff[Bearbeiten]

Das englische Wort „Servlet“ ist ein Kofferwort, das sich aus den Begriffen „Server“ und „Applet“ zusammensetzt, also serverseitiges Applet und somit Servlet.

Sun hat mit Einführung der Sprache Java zwei Arten von Anwendungen definiert: Applications (also richtige, ausgewachsene Desktop-Anwendungen) und Applets (wörtlich Anwendung-chen, also kleine Mini-Anwendungen, die nur innerhalb eines Containers – in der Regel in einem Webbrowser – ablaufen). Als die Java-Technologie auch auf die Serverseite kam, suchte man dort einen Namen für die kleinen Codestückchen, die jetzt nicht mehr im Kontext des Browsers, sondern in dem des Webservers laufen, der an Applet erinnert. Schließlich ist es ein im weitesten Sinne ähnliches Konzept: kleine Serveranwendung-chen, die einen Container (hier: ein um ein Servlet-Container erweiterter Web-Server) um sich herum brauchen, um laufen zu können. Dabei kam man auf Servlet.

Standardisierung / Versionen[Bearbeiten]

Die Handhabung, das Verhalten und das Verwalten von Java-Servlets folgt einem Standard, der über den Java Community Process (JCP) definiert wird. An diesem Standard wird aktiv gearbeitet und es gibt verschiedene Versionen. Die letzte veröffentlichte Version ist 3.1, welche Bestandteil der Java EE 7 Spezifikation ist. Sie wurde im Mai 2013 veröffentlicht[1][2].

Abgrenzung[Bearbeiten]

Um die Funktionalität eines Servers zu erweitern, können separate ausführbare Module geschrieben werden. Diese Server Extensions gibt es für zahlreiche Plattformen, z. B. existiert für die Microsoft Internet Information Services (IIS) das sogenannte Internet Server API (ISAPI). In Java werden Server-Erweiterungen mit Hilfe der Servlet API geschrieben. Die Server-Extension-Module heißen Servlets.

Beispiel[Bearbeiten]

  1. Der Benutzer sendet ein ausgefülltes Formular im Browser ab.
  2. Der Browser löst die damit verbundene Aktion aus, indem er die Formulardaten an den Webserver sendet.
  3. Der Webserver übersetzt den Aktionsnamen des Formulars in den Namen einer Servletklasse. Er verwendet dazu Informationen aus dem Deployment-Deskriptor, einer Datei namens „web.xml“.
  4. Der Webserver ruft die Methode request des Servlets auf und übergibt dabei die Anfragedaten („request“) als Parameter. Die Methode response erzeugt eine Ausgabe, die der Webserver an den Browser sendet.
  5. Der Browser nimmt die Antwort entgegen und stellt sie dar.
  6. Der Benutzer liest die Antwort im Browser.

Das folgende Ablaufdiagramm zeigt einen typischen Ablauf beim Aufruf eines Servlets.

Ablaufdiagramm einer Web-Anwendung mit Servlet


Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. [1]JCP Spezifikation 340
  2. [2]Java EE 7 Technologies