Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Programmieren von Webanwendungen

Grundlegende Java Web-Technologien

HTML-Seiten werden dynamisch programmiert, sodass bestimmte Inhalte zum Beispiel aus einer Datenbank in die HTML-Seite eingebunden werden können. Es gibt eine Reihe von Technologien, die in ihrer Gesamtheit dazu beigetragen haben, ein umfassendes Framework für die Entwicklung von Web-Anwendungen auf Basis der Programmiersprache Java zu bilden: Java-Servlets, Java Server Pages und AJAX.

Java-Servlets

Einer der ersten Ansätze zur Entwicklung dynamischer Webseiten wurde im Jahre 1997 entwickelt. Er bestand darin, die HTML-Seite nicht "von Hand" zu schreiben, sondern ein Java-Programm den gesamten HTML-Code erzeugen zu lassen. Diese Programme heißen Java-Servlets. Sie nehmen eine HTTP-Anfrage mit etwaigen Parametern entgegen, stellen die HTML-Seite passend zu der Anfrage zusammen und senden sie als HTTP-Antwort zurück. Dabei greifen sie üblicherweise auf Datenbanken oder andere Informationsquellen zu, um möglichst spezifisch auf die Anfrage reagieren zu können.
Abbildung: Java-Servlets erzeugen dynamisch HTML-Code

Java-Servlets werden nicht unmittelbar vom Browser aufgerufen. Sie sind ausführbare Programme und haben daher keine Internet-Adresse (URL), unter der sie von außen erreichbar sind. Damit sie trotzdem HTTP-Anfragen bearbeiten können, muss es eine Komponente geben, die

  1. über eine URL erreichbar ist
  2. das zu der Anfrage passende Servlet aufrufen kann
  3. den erzeugten HTML-Code an den Browser zurückschicken kann

In der Java EE-Architektur werden diese Komponenten Servlet-Container (auch: Web Container) genannt. In großen Projekten sind Servlet-Container Bestandteil eines Application Servers. Bei kleineren Projekten oder Prototypen können sie auch als einzelne Komponente verwendet werden. Beispielimplementierungen solcher Servlet-Container sind beispielsweise "Apache Tomcat", der bereits in die Entwicklungsumgebung Netbeans integriert ist, sowie "Jetty".

Möchte man eine eigene Servlet-Klasse programmieren, muss die Klasse von HTTPServlet erben. HTTPServlet ist eine abstrakte Klasse, die im Paket javax.servlet.http enthalten ist und grundlegende Methoden eines Servlets definiert. Da es mit GET und POST zwei Typen von HTTP-Anfragen gibt, gibt es die beiden Methoden doGet und doPost.
Abbildung: Eine eigene Servlet-Klasse muss von HTTPServlet erben

Folgendes einfaches Beispiel-Servlet reagiert auf beide Anfragetypen mit derselben Methode. Es handelt sich um eine traditionelle "Hello World"-Methode, die einem Benutzer nach Aufruf der Web-Anwendung einen entsprechenden in HTML programmierten Begrüßungstext anzeigt.
Abbildung: Ein sehr einfaches 'Hello World'-Servlet

In diesem einfachen Beispiel wurde noch kein Zugewinn hinsichtlich der Dynamik erreicht. Schließlich müsste nun bei einer Änderung des Inhaltes anstelle einer HTML-Datei die Java-Klasse manuell angepasst werden. Doch innerhalb eines Java-Programms ist es eine leicht zu lösende Aufgabe, abhängig von den Parametern in der HTTP-Anfrage bestimmte Datenbankabfragen zu starten und den Inhalt aus den Ergebnissen dieser Datenbankabfrage zu füllen.

Programmiert man das Beispiel nach, so kümmert sich die Entwicklungsumgebung eigenständig darum, dass der Servlet-Container gestartet und das eigene Servlet dort installiert wird. Die URL, mit der auf das Servlet zugegriffen werden kann, wird vom Servlet-Container vorgegeben. standardmäßig setzt sie sich aus dem Projektnamen und dem Namen der Servlet-Klasse zusammen (hier: siehe Localhost). Die Seite zeigt die gewünschte Begrüßung an und auch der vom Browser angezeigte Quelltext stimmt mit dem in der Servlet-Methode zusammengestellten HTML-Code überein.
Abbildung: Darstellung der vom Servlet generierten HTML-Seite, mit Quelltext