studyklar
IProg · Skript 8 · Abschnitt 3

Ein Servlet schreibt eine HTML-Tabelle

Ein Servlet antwortet auf eine Anfrage mit einer HTML-Seite. Hier steht das Beispiel von Folie 16: eine Tabelle mit Vor- und Nachnamen. Rechts wächst der Code Zeile für Zeile, am Ende steht die fertige Seite. Mit Weiter geht es voran.

Worum es geht

Skript 08, Folien 16, 18, 19 und 20: ein Servlet-Beispiel, seine Deklaration und wie man es ausführt.

Skript 08, Folie 15 hat gezeigt, wann doGet läuft. Jetzt geht es darum, was darin steht: Wie schreibt ein Servlet eine HTML-Seite? Und woher weiß der Server, welches Servlet zu welcher Adresse gehört?

Zwei kleine Änderungen an der Folie: Die Folie lässt offen, woher die Personen kommen („irgendwoher“). Hier sind es zwei feste Personen, damit man die Ausgabe sieht. Und die Folie schreibt einmal getNName, auf Folie 28 aber getNname; hier steht überall getNname.

„Folie N“ heißt hier immer die N-te Seite der PDF-Datei. Die kleine Zahl unten auf der Folie kann davon abweichen.

So gehen wir vor:

  1. Klasse und Methode doGet.
  2. Die Antwort als HTML ankündigen und die Seite Zeile für Zeile schreiben.
  3. Eine Tabellenzeile je Person, dann die fertige Seite.
  4. Das Servlet einer Adresse zuordnen: Annotation oder web.xml.
  5. Das Servlet auf den Server bringen und eine Klausurfrage.

Klasse und Methode doGet

public class DemoServlet extends HttpServlet {  public void doGet(HttpServletRequest request,                    HttpServletResponse response) throws ServletException, IOException {

Die Klasse DemoServlet erbt von HttpServlet und liegt im Paket servlet (Zeile 1). Die Zeilen 3 bis 11 importieren die Klassen, die sie braucht. Die Folie kürzt das mit „...“ ab.

Sie überschreibt doGet: Diese Methode läuft bei jeder GET-Anfrage. request enthält die Anfrage des Browsers, response ist die Antwort, die wir füllen.

throws heißt: Die Methode darf diese Fehler an den Container weitergeben. Die Folie kürzt sie ab; es sind ServletException und IOException (Fehler beim Schreiben).

Aus Skript 08, Folie 15: Bei jedem Aufruf ruft der Servlet-Container doGet auf (bei GET) oder doPost (bei POST).

Die Antwort als HTML ankündigen

    response.setContentType("text/html; charset=ISO-8859-1");

Der Browser muss wissen, was er bekommt. setContentType sagt es ihm: text/html heißt „eine HTML-Seite“.

charset=ISO-8859-1 nennt den Zeichensatz, also wie Buchstaben als Bytes gespeichert sind. ISO-8859-1 kennt die deutschen Umlaute. Heute nimmt man meist UTF-8, das alle Schriften kennt.

Noch 12 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1Das Servlet

eine HTML-Seite aus Java

package servlet; import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import model.CPerson;   public class DemoServlet extends HttpServlet {  public void doGet(HttpServletRequest request,                    HttpServletResponse response) throws ServletException, IOException {                  }}
LegendeZeilen des SchrittsDas Servlet DemoServlet von Folie 16 entsteht Zeile für Zeile.