Netzprogrammierung (WS 2007/2008)  19538
Übungsblatt  4
Ausgabe 27.11.07
Abgabe 11.12.07 - 14°°

Aufgaben
 
  1. Erweitern Sie Ihren Webserver zu einem Proxyserver. Dieser soll einige eher unkonventionelle Funktionalitäten zur Verfügung stellen:

    • Bilder werden aus Webseiten herausgefiltert. Anstelle der Originalbilder sind entweder die alt="Mark und Julia auf der Havel"-Texte anzuzeigen, oder aber - und das wäre viel lustiger - andere Bilder, z.b. zufällige flickr-Fotos.

    • Formulardaten und andere interessante Inhalte (GET, POST, Authorization-Header, ..) werden in einer .log-Datei gespeichert.

    • Ihr Proxy soll auch einen TCP Server implementieren: Ein Klient soll eine Verbindung zu dem Proxy öffnen und sich identifizieren, indem er seinen Benutzernamen und sein Passwort in zwei einzelnen Zeilen als Klartext schickt. Falls die Eingaben stimmen, soll Ihr Programm alle gesammelten Informationen an den Klienten als Klartext zurückschicken und die Verbindung abbauen. Der Bentuzername soll dabei ein 'B' gefolgt von Ihrer Gruppennummer sein, dass Passwort ein 'P' mit Gruppennummer. Achten Sie darauf, dass alle Gruppennummern zweistellig sein sollen.

    Ihr Programm soll sich als HTTP-Proxy in einem Browser einstellen lassen, dessen Anfragen weiterleiten, und diesem die Antworten des Servers zur Verfügung stellen.

    Hinweise:

    • Ihre Lösung soll GET, HEAD und POST Anfragen verarbeiten können. Sie müssen andere HTTP Methoden nicht unterstützen.

    • Sie brauchen sich nicht um Passwort-geschützte Seiten etc. zu kümmern.


  2. http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml enthält die EZB-Feststellungen der Wechselkurse des Euro. Bitte schreiben Sie ein Tool, das den jeweils aktuellen Kurs des Schweizer Franken (Kürzel CHF) ermittelt. Im JDK befinden sich mit der Java API for XML Processing (JAXP) verschiedene Technologien zur Verarbeitung von XML-Daten. Verwenden Sie entweder den vorhandenen SAX- oder DOM-Parser, um die genannte XML-Datei zu verarbeiten.

  3. Lassen Sie Ihren Webserver von Blatt2 eine Seite mit JavaScript anzeigen. Diese Seite soll natürlich wieder optisch ansprechend und bunt gestaltet sein und als spezielles Feature über mind. 5 Buttons verfügen, mit denen sich das Design verändern läßt. Dabei ist es Ihnen überlassen, ob sich das Design bei mouseOver oder mouseClick, etc. (wie auch immer das heisst!!) ändert, und was genau dann passieren soll.

 

Zum Bestehen des Blattes ist es erforderlich, dass
  • Aufgabe 1 funktioniert
  • Aufgabe 2 bearbeitet wurde
  • Aufgabe 3 funktioniert

Die Abgabe der Lösungen erfolgt auf zwei Wegen
  • Abgabe auf Papier:
Bitte schreiben Sie zur jeder Aufgabe eine Dokumentation, in der Sie anhand von *relevanten* Codefragmenten Ihre Implementierung erläutern. Die Codefragmente sollten möglichst kurz gehalten werden und nur der Orientierung für den Leser dienen; entscheidend sind Ihre Erläuterungen, was diese Fragmente machen und wieso Sie sich für diese Art der Implementierung entschieden haben. Erläutern Sie auch, welche Art der Fehlerbehandlung Sie vorgenommen haben, insbesondere bezüglich der Fehler, die erst bei verteilten Systemen auftreten. Die Dokumentation ist in den Fächern der Tutoren abzugeben. 
  • Abgabe per E-Mail:
Schicken Sie ein Archiv an Ihren Tutor, welches den vollständigen Quellcode sowie ausführbare JAR-Dateien für die jeweiligen Aufgabenteile enthält. Der Betreff der E-Mail sollte wie folgt anfangen:
"[ALP5] Gruppe X ....".

 
Diskussionsaufgaben, die nicht als Abgabe beantwortet werden sollen.Wir diskutieren sie in der Übung, Sie sollten sich im Rahmen dieser Aufgaben auf die Klausur vorbereiten.

Block XML Verarbeitung
  1. Was ist eine DTD?
  2. Was sind wohlgeformte und valide Dokumente?
  3. Was besagt die DTD-Regel <!ELEMENT Telekontakt  (email | fax | SMS)*>
  4. Was besagt die DTD-Regel <!ELEMENT  Vorname (name)+>
  5. Was besagt die DTD-Regel <!ELEMENT name (#PCDATA)>
  6. Was besagt die DTD-Regel <!ELEMENT Beschreibung ANY>
  7. Was besagt die DTD-Regel <!ELEMENT hr EMPTY>
  8. Was besagt die DTD-Regel <!ATTLIST fax standard CDATA #IMPLIED "G3">
  9. Was besagt die DTD-Regel <!ATTLIST Anschrift PLZ CDATA #REQUIRED>
  10. Wie definiert man mit einer DTD dass ein Attribut eine Ganzzahl als Wert enthalten muss?
  11. Was ist DOM, was sind seine Vor- und Nachteile?
  12. Was ist ein SAX-Parser, was sind seine Vor- und Nachteile?
Block Klientenseitige Verarbeitung
  1. Wie unterscheiden sich Variablen in JavaScript von Variablen in Java?
  2. Welche Arten Felder gibt es in JavaScript?
  3. Wie bettet man ein JavaScript-Programm in eine Web-Seite ein?
  4. Was repräsentiert das document Objekt in JavaScript?
  5. Wie kann man auf die Eigenschaften von Seiteninhalten mit JavaScript zugreifen?
  6. Wie bindet man JavaScript-Aktionen an Ereignisse?
  7. Nennen Sie drei Ereignisse die an HTML-Elementen auftreten können.
  8. Was sind Applets?
  9. Nennen und erklären Sie drei wichtige Attribute des <applet>-Tags.
  10. Welche zwei Methoden sind essentiell für die Funktionsweise eines Applets?
  11. Wie übergibt man einem Applet Parameter?
  12. Mit welchem Mechanismus reagieren Applets auf Interaktionen?