WWW Applikationen Vorlesung Anwendungssysteme Lernziele: • Wie funktioniert das WWW technisch? • Welche Basis-Interaktionsmöglichkeiten bietet das WWW? • Wie konstruiert man damit Web-basierte Informationssysteme, die auf Datenbanken zugreifen? WWW • 1990 Tim Berners-Lee, CERN: WWW basiert auf neuen Standards HTTP und HTML. Erster Browser: Nexus. • 1993 Mosaic-Browser, Marc Andreessen gründet Netscape. • 1995 Bill Gates stoppt Microsoft Network, Internet Explorer wird entwickelt. HTTP Hypertext Transfer Protocol • Zustandsloses InternetAnwendungs-Protokoll, basiert auf TCP. • Basis-Datenmodell: Verteilte Server mit eigenen Filesystemen. • Request-Response Paradigma. Auf einen Request wird ein File geliefert. • Nicht nur für HTML. Browser Response Request Server TCP: bidirektionale Verbindung • Ein Programm ist ständig bereit, eine Verbindung einzugehen: Der Serverprozess. • Auf einem Rechner werden Serverprozesse durch ihren Port unterschieden. • Der Client eröffnet die Verbindung aktiv. • Während der Verbindung sind beide Prozesse bidirektional verbunden durch ASCII-Streams. HTTP-Request • Wird an Server gerichtet, üblicherweise Port 80. • Request ist ein ASCII-Stream. • Erste Zeile bei einfachen Requests – Befehl (GET, POST, HEAD, ...) – Absoluter Filename. GET ag-db/index.html \n HTTP-Response • Besteht aus einem Statuswert und einer Datei. • Statuswert: 200 = OK. 404 = not found. • Sonderfall Redirection: Die Response ist eine neue URL, die automatisch geladen wird. URL Uniform Ressource Locator • Kompakte Darstellung eines Zugriffs mittels eines Netzwerkprotokolls: • http://www.inf.fu-berlin.de:80/ag-db/index.html protocol://server.domain:port/path/file.extension HTML HyperText Markup Language • Blockstrukturierte Sprache für grafische Darstellung.Blöcke heißen Tags. • Wichtiges Tag: Hyperlink. Enthält als Parameter eine URL. • Benutzereingaben mittels Forms. Diese erzeugen aus den Benutzereingaben einen HTTP-Request. <HTML> <TITLE> Demo Page </TITLE> <BODY> <H1> Hello World </H1> This is <A HREF=http://www.w3c.org> HTML. </A> </BODY> </HTML> HTTP-Server • Einfaches Programm, das auf einem Socket lauscht. Typischerweise Benutzer nobody. • Pfade in den Anfragen werden vom Serverprogramm oft übersetzt. Pfade in den Anfragen sind daher nur virtuelle Pfade. • Für viele Anwendungen: Rückgabe konstanter Files reicht nicht aus (z.B. Suchmaschinen). Server-Skripting • Auf der Serverseite werden anwendungsspezifische Programme ausgeführt. Diese liefern ein File. • Ursprüngliche Methode: CGI – CGI: Common Gateway Interface. – Je Request wird ein Prozess gestartet. – Standardausgabe ist Serverantwort. Browser Request Response Server AnwendungsProgramm Dreischicht-Architektur Clients • Informationssysteme greifen typischerweise auf Datenbanken zu. • Zugriff auf Datenbank mit sprachspezifischer Datenbankschnittstelle C: ESQL Java: JDBC (SQLJ) Middletier Datenbank Benutzereingaben, Parameter. • HTTP bietet Standardmechanismus für Parameterübergabe in der URL: http://www.beisp.de/cgi-bin/myscript/myoption?vl=aws&termin=1 • myoption ist virtueller Pfad • vl und termin sind Parameter mit Werten. • HTTP erlaubt Fernaufrufe von Methoden, die Parameter nehmen und Texte liefern. HTML-Forms Quellcode suche • Ein Form ist ein Bestandteil einer HTMLSeite (ein Tag), der verschiedene Eingabeelemente enthält. • Ein Form konstruiert aus den Benutzereingaben eine parametrisierte (interaktive) URL. Darstellung <FORM action= http://...> suchbegriff suche </FORM> Wohnung ok Dies ist der HTML-Form. Form-Elemente • • • • • • Textfelder einzeilig Textbereiche Radio Buttons Checkboxes Choice Lists Submit- und reset-Button HTML-Interaktionsstil • Ein Link startet interaktives Programm. • Ergebnis enthält wieder Links auf interaktive Programme. Browser Server Url Script1 Text Link Script2 Tabelle Sitzungen im WWW • HTTP ist zustandsloses Protokoll. Der HTTP-Server speichert keine Zustände. • Sitzungen erfordern, daß der Server den Client mit früheren Anfragen identifizieren kann. • Möglichkeiten: URL-rewriting, Cookies. Design von Web Applikationen • Entwurf auf Grundlage des WWW Interaktionsstils. • Applikation besteht aus Methoden, die Parameter nehmen und Seiten zurückgeben. • Die Rückgabeseiten enthalten Daten und Forms, die wiederum andere Methoden aufrufen. Logischer Entwurf • Angabe der Parameter einer Methode. • Angabe der daraus konstruierten SQLAnweisungen. Resultate erhalten Namen. • Erzeugung der neuen Seite aus den Resultaten. Die neue Seite besteht aus Informationen, Links und Forms. sucheName(gesucht){ • gefundene= ${SELECT * FROM adressen WHERE name=gesucht} • while(gefundene.hasMore()){ print(gefundene.name); print(gefundene.anschrift); print(gefundene.email); link(loesche, gefundene.key) } } (Tabelle: adressen(key, name,anschrift, email) Sitzungen im logischen Entwurf • Methoden werden objektorientiert aufgefasst. • In einer Sitzung wird immer dasselbe Sitzungsobjekt aufgerufen. • Im Sitzungsobjekt können Daten abgespeichert werden. • Beispieltabelle: mail(to, from, subject, msg) loggedOn = false; setName(pretendedName){ this.name = pretendedName; this.loggedOn = true;} newMail(to, subject, msg){ if(! this.loggedOn) abort; ${INSERT INTO mail VALUES(this.name, to, subject, msg)} print(„done“);} getMails(){ if(! this.loggedOn) abort; allMails= ${SELECT from, subject, msg FROM mail WHERE to = this.name} while(allMails.hasMore()){ print(allMails.from); ... form(newMail, allMails.from, allMails.subject, *)}}