<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Jakarta_Servlet</id>
	<title>Jakarta Servlet - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Jakarta_Servlet"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Jakarta_Servlet&amp;action=history"/>
	<updated>2026-05-17T13:23:49Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Jakarta_Servlet&amp;diff=8776&amp;oldid=prev</id>
		<title>imported&gt;Trustable: Kleinigkeiten verbessert</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Jakarta_Servlet&amp;diff=8776&amp;oldid=prev"/>
		<updated>2025-05-17T18:35:17Z</updated>

		<summary type="html">&lt;p&gt;Kleinigkeiten verbessert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Als &amp;#039;&amp;#039;&amp;#039;Jakarta Servlet&amp;#039;&amp;#039;&amp;#039; (früher Java Servlet) bezeichnet man [[Java (Programmiersprache)|Java]]-[[Klasse (Objektorientierung)|Klassen]], deren Instanzen innerhalb eines [[Webserver]]s Anfragen von Clients entgegennehmen und beantworten. Der Inhalt der Antworten kann dabei &amp;#039;&amp;#039;dynamisch&amp;#039;&amp;#039;, also im Moment der Anfrage, erstellt werden und muss nicht bereits statisch (etwa in Form eines [[Hypertext Markup Language|HTML]]-Dokuments) für den Webserver verfügbar sein. Servlets sind eine Weiterentwicklung der ursprünglich im Web-Bereich verwendeten Schnittstelle [[Common Gateway Interface|CGI]] oder anderer Konzeptionen. Java-Webanwendungen nutzen hauptsächlich Servlets, während dynamische Web-Inhalte klassisch über CGI zum Beispiel mittels [[PHP]], [[Ruby on Rails]], [[Active Server Pages]] oder [[Perl (Programmiersprache)|Perl]] erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
Die Servlet-Spezifikation ist Teil der [[Jakarta EE|Jakarta-EE]]-Technologie. Servlet-Container sind damit fester Bestandteil aller [[Jakarta EE|Jakarta-EE]]-[[Application Server|Anwendungsserver]]. Jedoch ist ein Servlet-Container nicht immer eine vollständige [[Jakarta EE|Jakarta-EE]]-Implementierung. Es gibt unabhängig davon Webserver, die einen Servlet-Container enthalten (z.&amp;amp;nbsp;B. [[Apache Tomcat]], [[Jetty (Webserver)|Jetty]]).&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
Ein Servlet wird implementiert, indem eine Klasse erstellt wird, die die Schnittstelle &amp;lt;code&amp;gt;jakarta.servlet.Servlet&amp;lt;/code&amp;gt; implementiert. Es gibt die Klasse &amp;lt;code&amp;gt;jakarta.servlet.http.HttpServlet&amp;lt;/code&amp;gt;, die diesen Vorgang vereinfacht. Anschließend wird eine oder beide Methoden &amp;lt;code&amp;gt;doGet&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;doPost&amp;lt;/code&amp;gt; überschrieben, um die beiden wichtigsten [[Hypertext Transfer Protocol|HTTP]]-Methoden &amp;#039;&amp;#039;GET&amp;#039;&amp;#039; und &amp;#039;&amp;#039;POST&amp;#039;&amp;#039; verarbeiten zu können. Häufig wird auch nur die Methode &amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt; überschrieben, welche unabhängig vom HTTP-Befehl aufgerufen wird.&lt;br /&gt;
Um das Servlet auf dem Web-Server registrieren zu können, müssen Metainformationen bereitgestellt werden. Diese Metainformationen werden hinterlegt in einer [[Extensible Markup Language|XML]]-Datei namens &amp;lt;code&amp;gt;web.xml&amp;lt;/code&amp;gt;, dem sogenannten &amp;#039;&amp;#039;[[Deployment Descriptor]]&amp;#039;&amp;#039;. Der Deployment Descriptor wird zusammen mit der kompilierten Servlet-Klasse (sowie ggf. weiteren benötigten Klassen) in einer Archiv-Datei, dem &amp;#039;&amp;#039;[[Web Application Archive|Web-Archiv]]&amp;#039;&amp;#039;, zusammengeführt. Dieses Web-Archiv wird dem Servlet-Container über eine von ihm bereitgestellte Funktionalität übergeben &amp;#039;&amp;#039;(deployment)&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Zur Laufzeit greift der Webserver auf den Servlet-Container zu, der wiederum möglicherweise eine Instanz des Servlets erzeugt und die entsprechende Methode startet. Einige Container wickeln mehrere Requests und damit Threads gleichzeitig über einen Pool von Servlets ab. Deswegen sollte bei Attributen innerhalb eines Servlet immer der gleichzeitige Zugriff von mehreren Threads im Hinterkopf behalten werden.&lt;br /&gt;
&lt;br /&gt;
Häufig werden in einem Servlet sowohl Parameter der Anfrage als auch [[Sitzung (Informatik)|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.&lt;br /&gt;
&lt;br /&gt;
Servlets werden oft nach dem [[Entwurfsmuster]] [[Model View Controller]] (MVC) in Form von [[Jakarta Server Pages]] (JSP) verwendet. Hierbei repräsentieren meist die JSP oder [[Facelets|JSF]] die View. Interessanterweise werden auch die JSP-Seiten zur Laufzeit zu Servlets kompiliert. Die selbst geschriebenen Servlets bilden Controller sowie Model ab. Frameworks wie z.&amp;amp;nbsp;B. [[Spring (Framework)|Spring MVC]] oder [[Struts]] bilden eine weitere Ebene der Abstraktion und bieten ein schärfer getrenntes MVC-Muster.&lt;br /&gt;
&lt;br /&gt;
== Begriff ==&lt;br /&gt;
Das englische Wort „Servlet“ ist ein [[Kofferwort]], das sich aus den Begriffen „[[Server]]“ und „[[Java-Applet|Applet]]“ zusammensetzt, also serverseitiges Applet und somit Servlet.&lt;br /&gt;
&lt;br /&gt;
Sun hat mit Einführung der Sprache Java zwei Arten von &amp;#039;&amp;#039;Anwendungen&amp;#039;&amp;#039; definiert: Applications (also Desktop-Anwendungen) und Applets (wörtlich &amp;#039;&amp;#039;Anwendung-chen&amp;#039;&amp;#039;, also Mini-Anwendungen, die nur innerhalb eines &amp;#039;&amp;#039;Containers&amp;#039;&amp;#039; – 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 &amp;#039;&amp;#039;Serveranwendung-chen&amp;#039;&amp;#039;, 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 &amp;#039;&amp;#039;Servlet&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Standardisierung / Versionen ==&lt;br /&gt;
Die Handhabung, das Verhalten und das Verwalten von Jakarta-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 5.0, welche Bestandteil der Jakarta EE 9 Spezifikation ist. Sie wurde im September 2020 veröffentlicht.&amp;lt;ref&amp;gt;[https://jakarta.ee/specifications/servlet/5.0/ Jakarta Servlet 5.0 ]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Abgrenzung ==&lt;br /&gt;
Um die Funktionalität eines Servers zu erweitern, können separate, ausführbare Module geschrieben werden. Diese &amp;#039;&amp;#039;Server Extensions&amp;#039;&amp;#039; gibt es für zahlreiche Plattformen, z.&amp;amp;nbsp;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.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
# Der Benutzer sendet ein ausgefülltes Formular im Browser ab.&lt;br /&gt;
# Der Browser löst die damit verbundene Aktion aus, indem er die Formulardaten an den Webserver sendet.&lt;br /&gt;
# Der Webserver übersetzt den Aktionsnamen des Formulars in den Namen einer Servletklasse. Er verwendet dazu Informationen aus dem &amp;#039;&amp;#039;Deployment-Deskriptor&amp;#039;&amp;#039;, einer Datei namens „web.xml“.&lt;br /&gt;
# Der Webserver ruft je nach HTTP-Methode des Formulars (GET oder POST) die Methode &amp;#039;&amp;#039;doGet&amp;#039;&amp;#039; bzw. &amp;#039;&amp;#039;doPost&amp;#039;&amp;#039;-Methode des Servlets auf und übergibt dabei die Anfragedaten („request“) als Parameter zusammen mit einem &amp;#039;&amp;#039;response&amp;#039;&amp;#039;-Objekt, mit dem Ausgaben getätigt werden können. Die Ausgaben werden nach Abschluss der Methode vom Webserver an den Browser gesendet.&lt;br /&gt;
# Der Browser nimmt die Antwort entgegen und stellt sie dar.&lt;br /&gt;
# Der Benutzer liest die Antwort im Browser.&lt;br /&gt;
&lt;br /&gt;
Das folgende Ablaufdiagramm zeigt einen typischen Ablauf beim Aufruf eines Servlets.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Jakarta EE Servlet DE.svg|mini|links|600px|Ablaufdiagramm einer Web-Anwendung mit Servlet]]&lt;br /&gt;
{{Absatz|links}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://jcp.org jcp.org]&lt;br /&gt;
* [https://jakarta.ee/specifications/servlet/5.0/ Jakarta Servlet 5.0] (englisch)&lt;br /&gt;
** [https://jcp.org/en/jsr/detail?id=369 Java Servlet 4.0 Spezifikation] (englisch)&lt;br /&gt;
** [http://jcp.org/en/jsr/detail?id=340 Java Servlet 3.1 Spezifikation] (englisch)&lt;br /&gt;
** [http://www.jcp.org/en/jsr/detail?id=315 Java Servlet 3.0 Spezifikation] (englisch)&lt;br /&gt;
* [http://www.oracle.com/technetwork/java/javaee/servlet/index.html &amp;#039;&amp;#039;Java Servlet Technology Overview&amp;#039;&amp;#039;] bei [[Oracle]] (englisch)&lt;br /&gt;
* [http://tomcat.apache.org/ Tomcat] apache.org (englisch) – die Referenzimplementation der Servlet- und JSP-Spezifikation&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Navigationsleiste Webserver-Schnittstellen}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java (Programmiersprache)]]&lt;br /&gt;
[[Kategorie:Web-Entwicklung]]&lt;br /&gt;
[[Kategorie:Kofferwort]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Trustable</name></author>
	</entry>
</feed>