Basis-, Mehrwert-und Metainformationsdienste Kurs 17.5.2001 (Konstanz) / 22.6.2001 (Berlin) Dozent: Dr. Bernard Bekavac 1 Mehrwertdienst: WWW Web-Technologien II Web-Technologien II Übersicht 2 HTTP-Server CGI Java / JavaScript Weitere Programmierumgebungen
Web-Technologien II: Server HTTP-Server 3 Verwaltet die vorhandene Dokumentenmenge (HTML, Grafik, sonstige Formate) Zuordnung URL - Dokument - content type Gateway zu Anwendungen / Datenbanken (CGI, Servlets, ASP usw.) Erzeugung dynamischer Dokumente (SSI) Zugriffsbeschränkung und Sicherheitsmechanismen Umleitung von Anfragen (Redirection) Protokollierung Web-Technologien II: Server Dokumentenverwaltung - Virtuelle Verzeichnisse 4 HTTP- Request URL-path Type HTML CGI Servlet URL access-info File Exec Java Virtuelle Verzeichnisse Servlet HTML Verzeichnis / Laufwerke CGI
Web-Technologien II: Server Zugriffsbeschränkung 5 Über das virtuelle Verzeichnis CGI Benutzer1 Passwort1 Benutzer1 Benutzer1 Passwort1 Passwort1 Benutzer2 Paßwort2... Type HTML CGI Servlet access-info File Exec Java HTML Servlet Über Zugriffsrechte der Verzeichnisse / Dateien (Betriebssystem-abhängig) Web-Technologien II: Server Sicherheitsmechanismen - Firewall 6 Internet Firewall-Rechner Filterung von von Anfragen (extern // intern) über über Zuordnung: IP1 IP1 IP2 IP3 Type HTML CGI Servlet access File Exec Java Filterung von von internen Anfragen nach nach außen über über Domain-Namen (Proxy-Server) IP4 IP1 IP3 IP2
Web-Technologien II: Server Sicherheitsmechanismen - S-HTTP Eine mit Sicherheitsfunktionen erweiterte Variante von HTTP 7 Server/Client-basiert Authentifikation Serverzertifikate Dokumentbasiert Digitale Signatur Verschlüsselung (public key) Hypertext HTML HTTP S-HTTP Transport Vermittlung Sicherung Bitübertragung WWW TCP, UDP IP Subnetzwerk Web-Technologien II: Server Sicherheitsmechanismen - SSL 8 Secure Sockets Layer (SSL) sichert eine Verbindung auf Socket-Ebene (Ports) Diensteunabhängig Standardport 443 bei HTTP Hypertext HTML WWW Verschlüsselung und Nachrichtenintegrität der Client/Server Kommunikation Server-Authentifizierung HTTP SSL Transport Vermittlung Sicherung Bitübertragung TCP, UDP IP Subnetzwerk
Web-Technologien II: Server Sicherheitsmechanismen - S-HTTP & SSL 9 HTTP S-HTTP Zertifikat SSL (443) Web-Technologien II: Server Redirection 10 HTTP- Request URL Redirection? Y N URL-path Redirection URL Type access-info Internet URL x URL y URL 1 URL 2 HTML CGI File Exec......... Servlet Java
Web-Technologien II: Server Protokollierung 11 Zugriffsprotokollierung im Common Logfile Format remotehost remoteident authuser [date] request status bytes remotehost remoteident authuser [date] request status bytes Logdatei remotehost remoteident authuser [date] request status bytes Hostname / IP des Client Identifizierung des Client (IDENT) Benutzername (falls vorhanden) Datum / Uhrzeit der Anfrage HTTP-Method und URL HTTP-Response Code Größe des HTTP-Response-Body Web-Technologien II: Server HTTP-Steuerung HTTP-Response des Servers kann zum Teil auch über META-Tags des angeforderten HTML- Dokuments gesteuert werden: <META HTTP-EQUIV=Feldname CONTENT=Inhalt [Attribut=Inhalt]... > 12 Die Handhabung von HTML-Seiten mit diesem META-Tag ist von Server zu Server verschieden (Spezielle Verzeichnisse / -Dateiendungen usw.)
Web-Technologien II: Server Produkte / Hersteller The Apache Group kostenlos NetBSD, Digital, UNIX, BSDI, AIX, OS/2, SCO, HPUX, Windows NT, Linux, FreeBSD, IRIX, Solaris Microsoft kostenlos / Win2000 Windows NT Windows 2000 (incl.) 13 Einschlägige Web-Sites: serverwatch.internet.com, www.netcraft.com Server/ Marktanteil Hersteller Preis BS Apache / 60 % Microsoft / 20 % iplanet / 6 % Sun/Netscape ca. $ 1500,- Diverse Unix- Derivate (Digital, AIX, HP, IBM) Windows NT, IRIX Besondere Features open source, SSI, Java (VM) ASP, Microsoft APIs, ODBC-Schnittstelle, Treiberunterstützung Java (VM), Oracle, Informix support Web-Technologien II Übersicht 14 HTTP-Server CGI Java / JavaScript Weitere Programmierumgebungen
Web-Technologien II: CGI Common Gateway Interface (CGI) 15 Verbindet das Web mit Server-seitigen Anwendungen Daten Ermöglicht das Übergeben von Daten an Server Schnittstellendefinition (Über Umgebungsvariablen) Server-Unterstützung notwendig Programmiersprachen-unabhängig (meist Perl) In der Regel Serverplattform-abhängig Einbindung in HTML über URL Web-Technologien II: CGI CGI-Aufbau 16 Web-Browser HTTP-Request (cgi-url, POST Data) schreiben Umgebungsvariablen EXEC URL-path lesen Std-in: Data Std-out: HTML CGI- Verzeichnis Programm HTTP-Response (HTML-Text) DB
Web-Technologien II: CGI Typische CGI-Umgebungsvariablen 17 Variable server_name request_method path_info script_name content_type content_length query-string Inhalt Server-Name HTTP-Zugriffsmethode Pfadinformationen des Programms Programmname Inhaltskennung Länge der übertragenen Daten Daten bei GET-Methode Web-Technologien II: CGI CGI-Beispiel - HTML-Einbindung 18 <html> <head> <title>kommentarseite</title> </head> <body> <h1>ihr Kommentar</h1> <form action="/cgi-bin/comments.pl" method=post> Name: <input size=40 maxlength=40 name="anwendername"><br> Text: <textarea rows=5 cols=70 name="kommentartext" wrap=virtual> </textarea><p> <input type=submit value="absenden"> </form> </body> </html>
Web-Technologien II: CGI CGI-Beispiel - Server-Programm (Perl) 19 #!/usr/bin/perl read(stdin, $Daten, $ENV{'CONTENT_LENGTH'}); print "Content-type: text/html\n\n"; print "<html><head><title>cgi-feedback</title></head>\n"; print "<body><h1>cgi-feedback vom Programm <i>comments.pl</i></h1>\n"; @Formularfelder = split(/&/, $Daten); foreach $Feld (@Formularfelder) { ($name, $value) = split(/=/, $Feld); $value =~ tr/+/ /; $value =~ s/%([a-fa-f0-9][a-fa-f0-9])/pack("c", hex($1))/eg; $value =~ s/<!--(. \n)*-->//g; $Formular{$name} = $name; $Formular{$value} = $value; print "$Formular{$name} = $Formular{$value}", "<br>\n"; } print "</body></html>\n"; Web-Technologien II: CGI CGI-Nachteile 20 Bei jeder Interaktion wird ein neuer HTTP-Request (CGI) benötigt Bei jedem HTTP-Request (CGI) muß ein eigene Laufzeitumgebung für das entsprechende Programm bereitgestellt werden Das CGI-Programm muß die vollständige Aufbereitung (HTML) der Informationen übernehmen
Web-Technologien II Übersicht 21 HTTP-Server CGI Java / JavaScript Weitere Programmierumgebungen Web-Technologien II: Java Programmiersprache Java 22 Objektorientierte Programmiersprache (entwickelt von Sun Microsystems, JavaSoft) Plattformunabhängig Entwickelt für den Einsatz in Netzwerken Angelehnt an C++, jedoch wesentlich kleiner und einfacher Erzeugt portablen ausführbaren Code (Bytecode)
Web-Technologien II: Java Beispiel einer Java-Anwendung 23 Web-Technologien II: Java Einsatz von Java 24 Es werden folgende Arten von Java-Programmen unterschieden: Applets (Integriert in WWW-Seiten) Werden (automatisch) über Netz übertragen Laufen auf Web-Browsern Eingebunden in HTML-Dokumenten Servlets (ähnlich CGI) Laufen auf Web-Servern Verbinden Internet mit Server-Applications Können mit Applets kommunizieren Applications (Stand-alone-Anwendung) Stärken: Netzkommunikation, Protokoll-Handling, Multimedia
Web-Technologien II: Java Einsatz im Internet / WWW 25 Die Anwendung von Applets wird ermöglicht durch: Plattformunabhängigen Bytecode (Server-Seite) Generierung durch Java-Compiler, Ausführung durch die Java-Virtual Machine Besteht aus einfachen Instruktionen Virtual Machine (Client-Seite) Implementiert auf Zielplattform bzw. WWW-Browser Führt plattformspezifische Anweisungen aus Web-Technologien II: Java Traditionelle Compilierung 26
Web-Technologien II: Java Java-Compilierung 27 Web-Technologien II: Java Eigenschaften der Sprache 28 Einfach Objektorientiert Verteilt Zuverlässig/robust Portabel/architekturneutral Multithreading Dynamisch
Web-Technologien II: Java Sicherheitseigenschaften von Java 29 Eingeschränkter Zugriff auf das System des Zielrechners Kein unerlaubter Zugriff auf Daten des Zielrechners (Lesen, Ändern, Löschen usw.) Keine unerlaubte Kommunikation vom Zielrechner aus (z.b. E-Mail) Keine Ausführung bzw. Auswirkung von fehlerhaften Java-Programmen Schutz gegen Datenverlust am Zielrechner (Systemabsturz) Web-Technologien II: Java Einbinden von Applets in Web-Seiten 30 <APPLET [CODEBASE="Verzeichnis_des_Applets"] CODE="Programmname.class" [ALT="alternativer_Text"] [NAME="Name_des_Applets"] WIDTH=Breite_des_Applets_in_Pixel HEIGHT=Hoehe_des_Applets_in_Pixel [ALIGN=ABSBOTTOM BOTTOM BASELINE TOP TEXTTOP MIDDLE ABSMIDDLE LEFT RIGHT] [VSPACE=vertikaler_Platz_in_Pixel] [HSPACE=horizontaler_Platz_in_Pixel]>
Web-Technologien II: Java Einbinden von Applets in Web-Seiten 31 [<PARAM NAME=Parameter_1 VALUE="Wert_1">] [<PARAM NAME=Parameter_2 VALUE="Wert_2">] [...] [<PARAM NAME=Parameter_n VALUE="Wert_n">]......beliebiger HTML-Text der angezeigt wird,...falls der Browser nicht Java-fähig oder...java im Browser ausgeschaltet ist... </APPLET> Web-Technologien II: Java Java-Beispiel: Applet import java.applet.applet; import java.awt.graphics; public class Simple extends Applet { StringBuffer buffer; public void init() { buffer = new StringBuffer(); additem( Initialisierung... "); } public void start() { additem( Starten des Applets... "); } public void stop() { additem( Stoppen des Applets... "); } 32 public void destroy() { additem ( Entfernen des Applets..."); } void additem(string newword) { System.out.println(newWord); buffer.append(newword); repaint(); } public void paint(graphics g) { //Rechteck zeichnen g.drawrect(0, 0, size().width - 1, size().height - 1); //String ausgeben. g.drawstring(buffer.tostring(), 5, 15); } }
Web-Technologien II: Java Java - Problempunkte 33 Geschwindigkeit (-> Just-In-Time Compiler) Einschränkungen von Applets (-> Signierung) Verbreitung von KnowHow - Bytecode ist lesbar (-> Verschlüsselung) Druckproblem Web-Technologien II: Java Java-Produkte/Umfeld 34 JOE (Java Objekt Environment) - Anbindung von Java an CORBA-Standard JavaBeans - Komponenten für das Internet JDBC (Java Datenbase Connectivity) - Datenbank-API für JAVA NC - Network Computer Java-Hardware (picojava, microjava, ultrajava) Jini - Netzwerkdienst für Endgeräte
Web-Technologien II: JavaScript JavaScript 35 Skript-Sprache innerhalb von HTML-Seiten (Quelltext) - entwickelt von Netscape Skripte werden vom Browser ausgeführt Syntax ähnlich wie bei Java Anwendungsbreite reicht von Plausibilitätsprüfungen bei Formulareingaben über Fenstermanipulation bis zu automatischen Texten Ab Version 1.2 auch auf Server-Seite einsetzbar (ähnlich ASP oder SSI) Web-Technologien II: JavaScript JavaScript vs. Java JavaScript Der WWW-Browser interpretiert den Quelltext zur Laufzeit. Der Quelltext wird also nicht compiliert. Objektbasiert. Das Programm nutzt eingebaute Objekte, jedoch keine Klassen oder Vererbung. Der Quelltext wird in HTML-Quelltext integriert und ist dort vollständig (und nachlesbar) enthalten. Variablen werden nicht explizit deklariert und sind typenlos. 36 Java Der Quelltext wird getrennt compiliert und als ausführbares Programm (Bytecode) auf dem Server abgelegt. Objektorientiert. Objektorientierte Merkmale wie Klassen mit Vererbung stehen zur Verfügung. Die Java-Applets sind getrennt vom HTML-Dokument gespeichert und werden nur von diesem aufgerufen. Variablen müssen vor ihrer Verwendung mit Typangabe deklariert sein.
Web-Technologien II: JavaScript JavaScript-Objekte 37 Web-Technologien II: JavaScript JavaScript-Beispiel 38 <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!--- document.write( Das ist ist JavaScript!") // //--> </SCRIPT> <P>...das war ein ein Bsp. mit JavaScript!!! </BODY> </HTML>
Web-Technologien II: JavaScript JavaScript-Beispiel 39 <html> <head> <title>javascript-test</title> <script language="javascript" src="quadrat.js" type="text/javascript"> </script> </head> <body> <form> <input type=button value="quadrat von von 6 errechnen" onclick="quadrat(6)"> </form> quadrat.js </body> </html> function Quadrat(Zahl) { Ergebnis = Zahl * Zahl; alert("das Quadrat von " + Zahl + " = " + Ergebnis); } Web-Technologien II: JavaScript JavaScript-Versionen Version JavaScript 1.0 JavaScript 1.1 JavaScript 1.2 JavaScript 1.3 (ISO/ECMA) JavaScript 1.4 JavaScript 1.5 Web-Browser Netscape 2.0+, Internet Explorer 3.0+ 40 Netscape 3.0+, Internet Explorer 3.02+ (bed.) Netscape 4.0+, Internet Explorer 4.0+ (bed.) (DHTML, Server-Side) Netscape 4.5+, Internet Explorer 5.0+ Netscape 4.6+ Netscape 6.0+ Jscript MS Internet Explorer 4.x+, Netscape 4.0 (bed.) (Betriebsystemzugriff)
Web-Technologien II Übersicht 41 HTTP-Server CGI Java / JavaScript Weitere Programmierumgebungen Web-Technologien II Weitere Programmierumgebungen 42 PlugIn-Software: z.b. Macromedia Flash - Client-seitig interaktive vektorbasierte Grafiken skalierbar lauffähig Active Server Pages (ASP) - Server-seitig VBScripte oder Jscript werden innerhalb von HTML-Seiten eingebaut Scripte laufen ab, bevor Seite übertragen wird (Output = HTML-Text) Server Side Includes (SSI) - Server-seitig ähnlich wie ASP Befehle werden vom Server abgearbeitet