Software gestern - heute - morgen (1) 1. Prozedurale Entwicklung ( z.B. C, Fortran, Cobol, … ) warum? Programmieren der Logik war schwer/teuer wie? Entscheidungstabellen , Flussdiagramme , Zerlegung in Teilaufgaben , … Orientierung an der Aufrufreihenfolge im Programm 2. Objektorientierte Entwicklung ( z.B. C++, Java, C#, … ) warum? Programme waren zu schlecht wartbar, wieder verwendbar, anpassbar, …) wie? Klassen, Attribute, Methoden, Vererbung, … Orientierung an den Objekten einer Anwendung Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 1 Software gestern - heute - morgen (2) 3. Schichtenarchitektur (z.B. ISO-OSI, TCP/IP, WAP/WAE, …) warum? Zu viele Klassen und Prozeduren wie? Verteilte Architekturen aus Schichten von standardisierten Protokollen Orientierung an verifizierbaren Software-Schichten 4. Service-basierte Entwicklung warum? überall dem Kunden Dienste anbieten wie? Web-basierte Software und Middleware, Dienst-basierte Software, Dienst-Server, … Orientierung an den benötigten Diensten Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 2 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 1 Tomcat - Webserver C:\programme \tomcat \webapps Client \ROOT GET willkommen.html /willkommen.html \Abteilung1 HTTP/1.0 WebseitenVonAbteilung1 \Abteilung2 WebseitenVonAbteilung2 \web-Inf action = “servlet/pgm1“ \classes Servlets (=Programme) Server Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 3 Apache - Webserver C:\programme \Apache Group \Apache Client \htdocs GET willkommen.html /willkommen.html \Abteilung1 HTTP/1.0 WebseitenVonAbteilung1 \Abteilung2 WebseitenVonAbteilung2 \cgi-bin action = “cgi-bin/pgm1“ cgi-Programme \conf httpd.conf Server Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 4 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 2 Common Gateway Interface (CGI) bietet dieselbe Interaktion mit HTML-Forms Protokoll , IP-Nummer , Port , Web-Seite Textfeld Passwortfeld Submit-Knopf Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 5 Common Gateway Interface (CGI) dient als Schale um Webserver-Programme CGI HTTP Eingabe via HTTP vom Client Client HTTP Ausgabe via HTTP zum Client CGI-Programm Server Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 6 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 3 Servlets im Vergleich zu CGI CGI ist Vorläufer von Servlets Vorteil von CGI: • beliebige Sprache auf dem Server einsetzbar Vorteile von Servlets (Nachteile von CGI): • Servlets sind objektorientiert (Java) • Servlets sind portabel (CGI-Programme nur, falls in Java geschrieben) • Servlets sind sicher (Sicherheitsrisiken von CGI: „inkorrekte“ Benutzereingaben) Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 7 Java Server Pages (JSP) Vorläufer-Technologien: HTML - statische Seiteninhalte php, ... - dynamische Seiteninhalte, nicht typsicher Servlets - dynamische Seiteninhalte, typsicher und portabel , aber keine Trennung von Layout, Logik und Daten Neu: JSP - dynamische Seiteninhalte, typsicher und portabel , etwas bessere Trennung von Layout, Logik und Daten Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 8 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 4 Java Server Pages (Beispielausgabe) JSP-Verzeichnis JSP-Seite Layout (+konstanter Inhalt) dynamischer Inhalt Layout Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 9 JSP trennt Design und Logik http://localhost:8080 /beispiel1/clock.jsp JSP-Web-Server Web-Browser .class-Files Willkommen in ... Preisliste von Do. 11.Dez 9:50 ... Client WebDesigner clock.jsp Servlet (.java) Web-Seite (html) Programmierer Clock.Java Server Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 10 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 5 Java Server Pages (Beispiel) JSP-Direktive <-- clock.jsp --> <%@ page language="java" %> <jsp:useBean id="clock" class="Clock" /> JSP-Aktion <HTML> <H1>Willkommen in unserem Internetshop</H1> <p> Preisliste von <%= clock.getDay() %> ist ... </HTML> JSP Ausdruck import java.util.*; public class Clock { public String getDay() { return " " + new Date() ; } } // Clock.Java Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 11 Active Server Pages (ASP) MicroSoft‘s Alternative zu JSP • serverseitige Skriptsprache zur Generierung von HTML • Mischung von HTML und Kontroll-Code (Schleifen, ...) <% Code-Einbindung wie JSP-Skriptlet %> • benutzt ASP-Komponenten (z.B. in Visual Basic) , generiert Objekte zu diesen Komponenten und ruft für diese generierten Objekte Funktionen der Komponente auf • Response für ASP–Ausgabe ( wie response –Variable bei JSP ) • spezielle Kommandos für Datenbankzugriff • Einbettung verschiedener MS-Sprachen möglich, z.B. VB Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 12 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 6 ASP - Beispiel <HTML> <BODY> <% Dim obj Set obj = Server.CreateObject("asp1.hallo") Dim str str = obj.halloWelt Response.Write str %> </BODY> </HTML> Active Server Page asp1.asp ' tests new Development Web Function halloWelt() As String halloWelt = "Hello, World!" End Function Visual Basic ASP Komponente hallo.cls Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 13 PHP Hypertext Processor (PHP) Alternative zu JSP • serverseitige Skriptsprache zur Generierung von HTML • Mischung von HTML und Kontroll-Code (Schleifen, ...) • spezielle Kommandos für Datenbankzugriff • im Gegensatz zu JSP und ASP keine Komponenten eher für kleinere Web-Applikationen Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 14 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 7 PHP-Beispiel <html> <body> Eine Tabelle mit PHP ausgegeben php-Einbettung <?php $db = mysql_connect("localhost", "root"); DB-Verbindung mysql_select_db("mydb",$db); $result = mysql_query("SELECT * FROM Auftrag",$db); Query echo "<table border=1>\n"; HTML-Tabelle echo "<tr><td>Name</td><td>Position</tr>\n"; while ($myrow = mysql_fetch_row($result)) ein Result lesen { printf( "<tr><td>%s</td><td>%s</td></tr>\n", und ausgeben $myrow[1], $myrow[2] ); } echo "</table>\n"; eingebetteter HTML-Code ?> </body> </html> Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 15 Arten von Webserver-Technologien Server-Technologien für Web-Server statische Webseiten dynamisch generierte Seiten Layout-orientiert nur HTML PHP JSP ASP XSP Logik-orientiert CGI Servlet Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 16 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 8 Überblick über Server-Technologien Server-Technologien für Webserver XSP Active Server Pages (ASP) Mischt Java und XML mischt Programm und HTML Java Server Pages (JSP) mischt Java und HTML Servlet generiert HTML Java PHP CGI generiert HTML nur HTML portabel & typsicher mischt Programm und HTML beliebige Programmiersprache statische Webseiten Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 17 Zusammenfassung: Internet-Technologien Webserver-Technologien XSP Active Server Pages Java Server Pages (JSP) Servlet generiert HTML PHP CGI generiert HTML nur HTML Datenbankkopplung Client-PGM ruft DB-Server Web-Server ruft Datenbankserver nur HTML HTML+Javascript nur HTML HTML+Applets XML+XSL Dokumentsprachen Client-Technologien Webbasierte Informationssysteme - Prof. Dr. Stefan Böttcher - SS 2004 / 18 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 9