Aufgaben

Java Sockets

  1. Erweitern Sie die Beispiele HelloWorldClient.java und HelloWorldServ.java zu einem einfachen Web-Server und Web-Client. Gehen Sie dabei von folgendem Ablauf aus.

    1. der Web-Client baut eine TCP/IP Verbindung zum Web-Server host auf
    2. die TCP/IP Verbindung wird zu ObjectStreams 'veredelt'
    3. der Client schickt die String-Objekte "GET" und "nameEinerDatei.html" (evtl. mit Pfadangabe)
    4. der Web-Server sucht die Datei relativ zu seinem Verzeichnis 'document root' und öffnet einen BufferedReader zum lesen
    5. der Web-Server schickt eine Statuszeile aus 'response code' und evtl. Fehlerbeschreibung an den Client
    6. der Web-Server liest die Datei zeilenweise und schickt die Zeilen zum Client
    7. der Client gibt die empfangenen Zeilen auf dem Bildschirm aus

    Achten Sie mindestens auf folgende Fehler: 1) der Server ist nicht erreichbar, 2) die Datei existiert nicht. Überlegen Sie wie Sie sich gegen '../' im Dateipfad schützen können.

XML

  1. Erstellen Sie eine XML DTD für eine CD-Sammlung (cdverwaltung.dtd).
    Der Aufbau der CD-Sammlung sollte folgende Bedingungen erfüllen:

    1. Eine CD-Sammlung besteht aus beliebig vielen CD's, die entweder vom Typ "Album" (mehrere Titel des gleichen Interpreten) oder vom Typ "Sampler" (mehrere Titel verschiedener Interpreten) sind.
    2. Jede CD muss einen Titel haben.
    3. Die Angabe des Plattenlabels ist optional.
    4. Bei Alben muss der Name des Interpreten angegeben werden.
    5. Für jede CD muss der Name der einzelnen Tracks angegeben werden.
    6. Bei Samplern muss zu jedem Track auch der Name des Interpreten angegeben werden.
    7. Jeder CD muss eine Kategorie zugewiesen werden (z.B. Rock. Pop, Klassik etc.). Die Kategorien sollen aus einer endlichen Menge vorgegeben sein (Attribut).
    8. Jeder CD muss eine eindeutige ID zugewiesen werden (Attribut).

    Erstellen Sie eine XML-Datei (cdverwaltung.xml) die mindestens zwei Alben und zwei Sampler (jeweils mindestens 3-4 Tracks pro CD) enthält. Überprüfen Sie die Gültigkeit mit dem Programm 'valid'.

HTML

  1. Erstellen Sie eine HTML-Datei mit der über ein Formular die Daten für die CD-Sammlung aus Übung XML.1 eingegeben werden können (orientieren Sie sich bezüglich der Felder an den Bedingungen aus Aufgabe XML.1).

    Verwenden Sie eine Tabelle, um das Formular übersichtlich zu gestalten.

    Zur Formularverarbeitung können Sie den URL:

    http://trumpf-10.rz.uni-mannheim.de/~kredel/echo.phtml
    

    verwenden

    Hinweis zur korrekten Abgabe der Lösung:

    1. Verwenden Sie einen grafischen Webeditor (z.B. Netscape-Composer) und fügen Sie per copy & paste IHREN HTML-Code in die graphische Oberfläche ein. Kopieren Sie dann in der HTML-Code-Ansicht den vom Editor erzeugten HTML-Code im Body-Bereich und fügen Sie diesen in das Lösungsfeld ein.
    2. Legen Sie die HTML-Datei zusätzlich im public_html Ihres Homeverzeichnisses auf trumpf-10 ab und geben Sie im Lösungsfeld den Link zu dieser Datei an.

XHTML

  1. Untersuchen Sie ihre HTML-Seite aus Aufgabe (HTML.1, Formular mit Tabellen) auf ihre XHTML Konformität. Die erforderlichen DTDs finden Sie beim W3C oder im Verzeichnis DTD des Vorlesungsdownloads.

    1. Überprüfen Sie die Wohlgeformtheit mit Hilfe von tidy.
    2. Überprüfen Sie die Gültigkeit entsprechend XHTML 1.0 Transitional mit Hilfe von valid. Dazu müssen Sie z.B. folgenden DOCTYPE verwenden.
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
      
    3. Überprüfen Sie die Gültigkeit entsprechend XHTML 1.0 Strict mit Hilfe von valid. Dazu müssen Sie z.B. folgenden DOCTYPE verwenden.
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict///EN"
          "DTD/xhtml1-strict.dtd">
      
    4. Überprüfen Sie die Gültigkeit entsprechend XHTML 1.1 mit Hilfe von valid. Dazu müssen Sie z.B. folgenden DOCTYPE verwenden.
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1///EN"
          "DTD/xhtml11-flat.dtd">
      
    5. Überprüfen Sie die Gültigkeit entsprechend XHTML Basic 1.0 mit Hilfe von valid. Dazu müssen Sie z.B. folgenden DOCTYPE verwenden.
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0///EN"
          "DTD/xhtml-basic10.dtd">
      

    Verbessern Sie Ihre Seite, so dass sie am Ende XHTML 1.1 konform ist. Welche Unterschiede bleiben zu XHTML Basic 1.0 ?

CSS

  1. Erstellen Sie für die HTML-Seite mit der CD-Verwaltung aus Aufgabe HTML.1 eine globale Style-Sheet-Datei (styles.css).

    Folgende Formatierungen sollen mindestens definiert sein:

    1. Die Überschriften h1 und h2 sollen mit einer bestimmten Schriftart, Schriftgröße und Farbe dargestellt werden. Weitere Formatierungen sind optional (ergeben daher auch keine Bonuspunkte ;) )
    2. Die Standardschriftart soll Arial sein. Die Schriftgröße soll 12 Punkte betragen.
    3. Tabellen sollen wie folgendes Beispiel formatiert werden:
       
       
       
       
    1. Links sollen nicht unterstrichen sein. Wird der Mauszeiger über einen Link geführt, soll sich die Darstellung des Links verändern (Farbe, Schriftstärke oder ähnliches) - Kein JS!

    Schicken Sie zur Lösung den Inhalt der CSS-Datei ein und geben Sie auch an, wie aus einer HTML-Seite auf diese Datei referenziert wird (achten Sie auf das Maskieren!).

    Legen Sie die CSS-Datei auch auf dem trumpf-10 Server in Ihrem Homeverzeichnis ab und binden Sie diese in ihre CD-Verwaltungs-HTML-Seite ein. Geben Sie bei der Lösung auch den URL zur HTML-CD-Verwaltungsseite an, so dass man dieses abrufen kann.

JavaScript, DOM

  1. Schreiben Sie für die HTML-Seite mit der CD-Verwaltung aus Aufgabe XML.1 ein Programm mit JavaScript das folgendes kann.

    1. Beim Aufrufen der Seite soll eine Box erscheinen, in die man die Anzahl der Tracks eingeben muß. Wird eine Zahl > der Anzahl der möglichen Eingabefelder angegeben, so soll eine Fehlermeldung ausgegeben werden und die Eingabe muss berichtig werden. Erst nach der Eingabe einer korrekter Anzahl sollen die Felder der Seite ausgefüllt werden können. (Hat das Formular also z.B. 10 Track-Felder und es gib jemand als Anzahl 11 ein, dann soll ein Fehler ausgegeben werden)
    2. Es soll eine Zufallszahl generiert werden. Diese Zufallszahl soll dann im Feld ID oder CD-ID erscheinen und nicht mehr verändert werden können.
    3. Wird als CD-Typ "Album" gewählt, dann soll das JavaScript-Programm dafür sorgen, dass bei den Tracks nichts in das jeweilige Feld Interpret eingegeben werden kann.
      Wird als CD-Typ "Sampler" gewählt, dann darf nichts in das Feld Interpret (welches nach dem CD-Titel bei den allgemeinen CD-Daten kommt) eingegeben werden können.
    4. Das JavaScript-Programm soll überprüfen, ob in das Feld CD-Titel etwas eingegeben worden ist. Ist dies nicht der Fall, soll eine Fehlermeldung darauf hinweisen.
    5. Beim Abschicken des Formulars soll geprüft werden, ob tatsächlich so viele Tracks eingetragen worden sind, wie unter 1.) beim Aufrufen der Seite in das Eingabefeld eingegeben worden ist. Hat also jemand 8 angegeben und es sind nur 7 oder 9 eingegeben worden, dann soll eine Fehlermeldung erscheinen.
    6. Das JavaScript Programm soll mit allen Browsern, auch älteren funktionieren! D.h. es muss das Netscape-, Microsoft- und das W3C-Dokumentenmodell unterstützt werden.

    Schreiben Sie das JavaScript-Programm in einer separaten Datei und binden Sie es in Ihre HTML-Seite ein.

    Liefern Sie den Inhalt der JavaScript-Programm-Datei als Lösung ab und geben Sie noch den URL zu Ihrer Seite auf dem trumpf-10 an.

XSLT

  1. Entwickeln Sie für die XML CD-Sammlung (aus Aufgabe XML.1) eine XSL-Transformation nach XHTML.

  2. Entwickeln Sie für die XML CD-Sammlung (aus Aufgabe XML.1) eine XSL-Transformation nach WML.

XML Schema

  1. Entwickeln Sie für die XML CD-Sammlung (aus Aufgabe XML.1) eine XML Schema-Definition. Präzisieren Sie die Datentypen und die Struktur-Bedingungen, die Sie in der entsprechenden DTD festgelegt hatten, soweit es sinnvoll ist.

Email, SMTP

  1. Entwickeln Sie ein Java Programm SendMail, mit dem Sie eine Datei per SMPT an rumms.uni-mannheim.de verschicken können. Das Programm soll 3 Parameter auf der Kommandozeile entgegen nehmen: Empfänger, Absender und Dateiname.

    java SendMail x@y.de z@uni-mannheim.de datei_mit_mail.txt
    

    Als Vorlage für das Programm können Sie unseren Web-Server aus einer früheren Aufgabe nehmen. Allerdings können Sie hier keine Objekt-Ströme (SocketChannel) verwenden, da die rumms nur mit Byte-Strömen umgehen kann.

  2. Installieren Sie (Gnu-)PGP und erstellen Sie sich ein Schlüsselpaar (public und private). Verschicken Sie Ihren öffentlichen Schüssel per Email an die Mailingliste zur Vorlesung. Senden Sie eine signierte Email an die Mailingliste (beliebigen Inhalts). Vergleichen Sie die Schlüssel bei der nächsten Übung und verifizieren Sie damit den Absender der signierten Email.

HTTP, CGI

  1. Entwickeln Sie ein Java Programm WebGet, mit dem Sie eine Datei von einem Web-Server per HTTP 1.1 mit der GET Methode abrufen können. Das Programm soll 2 Parameter auf der Kommandozeile entgegen nehmen: Hostname und Dateiname.

    java Webget www.uni-mannheim.de rum/index.html
    

    Als Vorlage für das Programm können Sie unseren Web-Server aus einer früheren Aufgabe nehmen. Allerdings können Sie hier keine Objekt-Ströme (SocketChannel) verwenden, da die Web-Server nur mit Byte-Strömen umgehen können.

  2. Entwickeln Sie ein CGI Programm mit dem Sie ihre CD-Sammlung aus der XML-Datei als XHTML-Datei ausliefern.
    Zum Beispiel können Sie den Java XSLT Prozessor in dem Script direkt aufrufen:

    java org.apache.xalan.xslt.Process -in cdsammlung.xml -xsl cd2html.xsl
    

    Effizienter wäre es, wenn Sie die Transformation nur dann durchführen, wenn sich an der XML Datei etwas geändert hat und ansonsten eine fertige Datei ausliefern. In der Bash könnte dies folgendermassen aussehen:

    if [[ cdsammlung.xml -nt cdsammlung.html ]]
    then 
       java org.apache.xalan.xslt.Process -in cdsammlung.xml -xsl cd2html.xsl -out cdsammlung.html
    fi
    cat cdsammlung.html
    
  3. Entwickeln Sie einen Java Web-Server der nur ihre CD-Sammlung aus der XML-Datei als XHTML-Datei ausliefern kann.
    Intern können Sie wieder den Java XSLT Prozessor mit den entsprechenden Methoden aufrufen. Lassen Sie die Ausgabe direkt auf den Ausgabe-Socket schreiben ohne eine Datei zur Zwischenspeicherung zu verwenden.

PHP

  1. Entwickeln Sie ein PHP Programm mit dem Sie die Daten aus Ihrem CD-Formular in die XML Datei eintragen können.

JSP, Servlets

  1. Entwickeln Sie ein JSP Programm mit dem Sie die Daten aus Ihrem CD-Formular in die XML Datei eintragen können.
    Die XML Datei können Sie z.B. mit einem DOM oder SAX-Parser bearbeiten.

  2. Entwickeln Sie ein Java Servlet das ihre CD-Sammlung aus der XML-Datei als XHTML-Datei ausliefern kann.
    Intern können Sie wieder den Java XSLT Prozessor mit den entsprechenden Methoden aufrufen.


Seite mit weiterem Material aus den Übungen.


© Universität Mannheim, Rechenzentrum, 1998-2003.

Heinz Kredel

Last modified: Sat Jul 19 11:33:30 CEST 2003