Client/Server Praktikum WS 2000/2001
Kurzvorstellung: Servlets
Dynamisch erzeugte Webseiten gewinnen immer mehr an Bedeutung. Sei es um
die Ausgabe einer Datenbankabfrage anzuzeigen, eine Bestellung zu tätigen
oder eine bestehende Anwendung an das Internet anzubinden.
Die wichtigsten Technologien zur dynamischen Erstellung von Webseiten
sind:
-
CGI Skripte
-
Skript-Sprachen (zB: Net.Data von IBM, ActiveServerPages (ASP) von Microsoft,
ColdFusion von Allaire).
-
Server Plugins für bestimmte Webserver (z.B.: NSAPI von Netscape und
ISAPI von Microsoft)
-
Servlets
Was sind (HTTP) Servlets?
Servlets sind
spezielle serverseitige Java Programme.
"Serverseitig" bedeutet, daß die Programme auf dem Server laufen
und nicht auf dem Computer der die Webseite anzeigt. Geladen und ausgeführt
werden Servlets also von einem Webserver welcher Servlets unterstützt,
oder von einem entsprechendem Applikationsserver. So wie Applets die Funktionalität
eines Webbrowsers erweitern, erweitern Servlets die Funktionalität
eines Servers.
Servlets werden durch das Java Servlet API definiert, welches
eine Schnittstelle zwischen dem Server und dem Servlet darstellt. Deshalb
sind Servlets prinzipiell nicht abhängig von einem bestimmten Server.
Das Java Servlet API besteht aus den folgenden zwei Packages:
-
Package javax.servlet: Enthält Klassen für die Unterstützung
von generischen, protokollunabhängigen Servlets.
-
Package javax.servlet.http: Enthält Klassen für
die Unterstützung von Servlets, welche das HTTP Protokoll benutzen.
(HTTP Servlets)
Um ein HTTP Servlet zu erhalten muß man die Klasse HttpServlet erweitern.
Was können Servlets?
Hier einige Beispiele:
-
Eine ganze oder ein Teil einer HTML Seite dynamisch erzeugen und zurückliefern..
-
Eine Benutzereingabe verarbeiten und die Ergebnisse an andere Servlets
oder JSPs (mehr dazu bei den Vorteilen) schicken.
-
Mit anderen Server-Ressourcen kommunizieren (Datenbanken, andere Java Applikationen)
-
Verbindungen mit mehreren Klienten managen und Daten an diese verteilen.
(z.B. ein Chat-Server mit Servlets).
Wie werden Servlets aufgerufen?
Es gibt mehrere Möglichkeiten ein Servlet aufzurufen:
-
über einen Hyperlink
-
über ein HTML Formular (GET bzw. POST Methode)
-
über ein anderes Servlet
Verantwortlich für das Laden und Instanziiren, das Ausführen
und das Entfernen eines Servlets ist der Webserver bzw. Applikationsserver.
Dazu benutzt er das Java Servlet API. In der Regel existiert nur eine Instanz
jedes Servlets und mehrere Threads (eines für jeden Aufruf durch einen
Klienten) greifen auf das Servlet zu (Figure 2).
* Figure 2 ist aus IBM's Redbook: sg245423.pdf
Nachteile
- Performance? Über die Performance von Servlets vs. den anderen
Technologien habe ich eigentlich keine genaue Informationen. Es gibt jedoch
zwei Faktoren welche sich nachteilig auf die Performance auswirken können:
-
Java ist nicht die schnellste Programmiersprache.
- Da jedes Servlet i.d.R. nur einmal Instanziiert wird (es existiert also
genau ein Objekt von einem Servlet) und mehrere Threads des Servers gleichzeitig
darauf zugreifen, muß man oft die Methoden des Servlets als synchronized
deklarieren, um die Konsistenz von Member-Variablen (Klassenvariablen) zu
gewährleisten. Dies wirkt sich negativ auf die Performance aus. Meistens
kann man jedoch ohne Member-Variablen in den Servlets auskommen.
-
Höhere Anforderungen: Um mit Servlets zu arbeiten braucht man
einen Webserver / Applikationsserver der das Java Servlet API unterstützt.
Vorteile
-
Java basierend: Servlets werden in Java geschrieben. Man profitiert
also von den positiven Eigenschaften dieser Programmiersprache, wie zB.
die Objektorientierung und Modularisierung, die Einfachheit
der Sprache und den einfachen Datenbankzugriffen (JDBC). Dadurch
kann Code wiederverwendet werden und die benötigte Entwicklungszeit
verkürzt sich.
-
Portabilität: Da Servlets in Java geschrieben werden ist die
Portabilität zwischen verschiedenen Plattformen / Betriebsystemen
gewährleistet. Außerdem ist durch das Servlet API eine serverunabhängige
Schnittstelle definiert, was Servlets portabel zwischen verschieden Servern
macht.
-
Performance: Jedes Servlet wird nur einmal von Webserver geladen
(instanziiert). Es befindet sich dann im Speicher und kann sofort auf Anforderungen
(requests) des Klienten reagieren. Zusätzlich hat ein Servlet die
Möglichkeit schon während des initialisierens Datenbankverbindungen
zu erzeugen und zu behalten, so daß diese nicht für jede Anforderung
eines Klienten neu erzeugt werden müssen.
-
Trennung von Applikationslogik und Presentationslogik: Eine verwandte
Technologie zu Servlets sind JSPs (Java Server Pages). Dabei handelt es
sich um HTML Seiten die auch Java Programmcode enthalten. Servlets können
diese JSPs aufrufen und ihnen gleichzeit Objekte mit Daten übermitteln.
Die JSPs können diese Daten in den HTML Code der Seite einfügen.
So wird eine Trennung zwischen der Applikationslogik (Servlets) und der
Datenanzeige (JSPs) erzielt.
-
Sessions: Dieses Objekt des Servlet APIs wird eindeutig einem Benutzer
(über ein Cookie) zugeordnet. In eine Session können Daten von
verschiedenen Servlets geschrieben und gelesen werden. Auf diese einfache
Art und Weise können komplexe Vorgänge (z.B. eine Bestellung)
in mehrere Servlets aufgeteilt werden.
Im Praktikum:
Für das Praktikum benutzen wir den Applikationsserver WebSphere von
IBM, auf dem die Servlets ausgeführt werden. Als Datenbank benutzen
wir DB2 von IBM. Als Webserver werden wir voraussichtlich Apache benutzen.
Die konkreten Aufgaben stehen z.Zt. noch nicht fest.
Zum herumspielen wird es außerdem ein online Bestellsystem eines
fiktiven Pizza-Bringdienstes geben, welches auf Servlets basiert.
Letzte Aktualisierung: April 2000, © Copyright 1999,2000 Elias
Volanakis.
Alle Rechte vorbehalten.