Beispiel: Web-Shop Webbasierte Informationssysteme ??? SS 2004 Prof. Dr. Stefan Böttcher Client Server Applikation Web-Shop, ... ProduktDatenbank Software Web-Browser mit Applet, ... Web-Server, Servlet Datenbank, ... Hardware PC, Laptop, Handy, ... Unix-Rechner, … Universität Paderborn Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 1 Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 2 IT- und TK-Infrastruktur Überblick über Internet-Technologien Server-Technologien Datenbankkopplung ??? Client Netzwerk Applikation (Such-)Dienste, Web-Shop, ... Server Kataloge, Dienste, Mall, Bank, ... Software Web-Browser, Applet, ... Middleware, Internet, ... Web-Server, Datenbank-S., ... Hardware PC, Laptop, Handy, ... Festnetz, Funknetz, ... Unix-Rechner, ... Dokumentsprachen Client-Technologien Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 3 Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 4 Überblick über Internet-Technologien Überblick über Internet-Technologien Server-Technologien XSP Java Server Pages (JSP) Servlet generiert HTML PHP CGI generiert HTML nur HTML trennt Layout / Logik / Daten trennt z.T. Layout / Logik / Daten effizient / geht nur in Java einfach generierte Webseiten geht in jeder Sprache nur HTML einfach (Firewalls+) HTML+Javascript schnell entwickelbare Animationen HTML+Applets Typ-sichere, wartbare Animationen Client-Technologien einfach Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 5 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 6 1 Überblick über Internet-Technologien Überblick über Internet-Technologien Datenbankkopplung entlastet Web-Server nur HTML XML+XSL Client-PGM ruft DB-Server (läuft auch in altem Browser) (trennt Layout und Inhalt, wartbar) enge Kopplung Web-Server ruft Datenbankserver Dokumentsprachen Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 7 Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 8 3. Java-Webserver (1) Generierter HTML-Code <html> <head> <title> Generierter HTML-Code</title> </head> <body> Jetzt, Do 8. Feb 10:00:00 Uhr bieten wir Ihnen ... </body> </html> • Der Tomcat-Webserver • Servlets • HTML-Forms • Session-Konzepte • Servlets mit Datenbank-Anbindung Variabler Teil Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 9 Konstanter Teil Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 10 Java-Code zum generieren der Seite Tomcat Web-Server installieren import java.io.*; import java.util.*; Variable für die Ausgabe Ausgabestrom public class Kunde3 { public static void main( String[ ] args ) { Date zeit = new Date() ; PrintWriter aus = new PrintWriter(System.out) ; // aus für Ausgabe aus.println("<HTML>"); aus.println(" <head> <title> Kunde3 </title> </head> "); aus.println(" <body>"); aus.println(" <p>Jetzt, "+ zeit + " bieten wir Ihnen: ... \n </p>"); aus.println(" </body>"); aus.println("</HTML>"); aus.close() ; } } Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 11 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher • • • • download von: http://www.apache.org Default-Installation vornehmen Server starten mit: C:\tomcat\bin\startup.bat Server stoppen mit: C:\tomcat\bin\shutdown.bat Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 12 2 HTML-Dokumente auf dem Server speichern • Dokumente speichern in: C:\tomcat\Webapps\Root • z.B.: HTML-Dokument lokal speichern als C:\tomcat\Webapps\Root\Start.html • HTML-Dokumente ggf. editieren, z.B. mit Netscape (Datei|Seite ändern) oder UltraEdit Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 13 Überblick: Web-Server mit Servlets Browser auf dem Client evtl. mit Eingaben ruft Tomcat Web-Server zugreifen • im Browser Zugriff auf: http://192.168.1.113:8080/Start.html • IP-Nummer eines laufenden Tomcat-Servers • Default-Port: 8080 • Dokumentname (z.B. Start.html) eines Dokuments im Root-Verzeichnis C:\tomcat\Webapps\Root • Zugriff auf Dokumente in Unterverzeichnissen des Root-Verzeichnisses über Pfade, z.B. http://192.168.1.113:8080/abteilung1/Start.html Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 14 Servlet : erstes Beispiel Web-Server HTML-Seiten evtl. Servlets Erzeugt HTMLSeite Servlet-Ausgabe IP-Nummer Port (8080) Servlet-Verzeichnis des Web-Servers Servlet-Name Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 15 Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 16 Was ist ein Servlet ? Servlet-Code zum ersten Beispiel • (in Java geschriebene und compilierte) Anwendung auf dem Server. • wird vom Webserver automatisch gestartet. • erzeugt eine neue Seite für den Client. • wird auf dem Server gespeichert, z.B. in C:\tomcat\webapps\Root\Web-Inf\classes • kann Eingaben des Benutzers in HTML-Forms verarbeiten. import java.io.* ; import javax.servlet.* ; import javax.servlet.http.* ; Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 17 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher public class Servlet1 extends HttpServlet { public void doGet ( HttpServletRequest req , HttpServletResponse res ) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter aus = res.getWriter ( ); aus.println(“Willkommen in unserem Internetshop !"); } } Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 18 3 HTML-Form-Beispiel HTML-Form • Teil eines HTML-Dokuments • Kann Eingaben des Benutzers verarbeiten. • Input-Felder für interaktive Eingabe des Benutzers auf dem Client • Submit-Knopf (zum abschicken des ausgefüllten Formulars) • Eingaben werden z.B. in Servlets verarbeitet Submit-Knopf Input-Feld Webseite Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 19 Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 20 HTML-Form-Code-Beispiel Servlet-Code zum Form Beispiel <html> <head> <title> Hallo Kunde, bitte identifizieren ! </title> </head> <body> <H3>Herzlich willkommen in unserem Internetshop. Bitte geben Sie Ihren Namen ein ! </H3> <form method=get action="servlet/KenntKunde"> <input type=text name="anrede"> <p> <input type=submit value="Absenden"> </form> </body> </html> Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 21 Servlet Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 22 Parameter Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 23 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher public class KenntKunde extends HttpServlet { public void doGet ( HttpServletRequest req , HttpServletResponse res ) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter aus = res.getWriter (); String kunde = req.getParameter("anrede"); aus.println("Ihre Name ist: "); aus.println( kunde ); } } Alternative: Servlet generiert HTML-Code Ausgabe des Servlets Ausgabe import java.io.*; import javax.servlet.*; import javax.servlet.http.*; Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 24 4 Servlet generiert HTML-Code import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class KenntKunde2 extends HttpServlet { public void doGet ( HttpServletRequest req , HttpServletResponse res ) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter aus = res.getWriter ( ); String kunde = req.getParameter("anrede"); aus.println("<HTML><HEAD><TITLE>Willkommen</TITLE></HEAD><BODY>"); aus.println("<H3>Hallo <i>" + kunde + "</i>, willkommen in unserem ...!</H3>"); aus.println("<h3>In welchem Jahr sind Sie geboren, " + kunde +" ?</h3>" ); aus.println("<form method=get action=Rechnet>"); aus.println("<input type=text name=alter><p>"); aus.println("<input type=submit value=Absenden>"); aus.println("</form></BODY></HTML>"); } Umwandlung von Strings in Zahlen /Ausnahmen String s = tf.getText() ; // String s aus TextField tf einlesen Umwandlung nach int über Klasse Integer try{ // try-Block wird ausgeführt, bis Ausnahme auftritt // Ausnahme , falls s keine Ganzzahl enthält int intwert = Integer.valueOf( s ).intValue() ; } catch ( Exception e ) { System.out.println( “Fehler : “ + e ) ; } Umwandlung nach double über Klasse Double try{ // Ausnahme , falls s keine Komma-Zahl enthält double doublewert = Double.valueOf( s ).doubleValue() ; } catch ( Exception e ) { System.out.println( “Fehler : “ + e ) ; } } auffangen einer Ausnahme Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 25 Ausgabe des Servlets Rechnet.class Servlet Parameter Ausnahme-Behandlung Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 26 Java-Code des Servlets: Rechnet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class KenntKundeundRechnet extends HttpServlet { public void doGet ( HttpServletRequest req , HttpServletResponse res ) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter aus = res.getWriter (); String geburtsjahr = req.getParameter("alter"); int alter = 2001 - new Integer(geburtsjahr).intValue(); aus.println( "<HTML><HEAD><TITLE>Berechnet Alter des Kunden" + "</TITLE></HEAD><BODY>" ); aus.println("<H3>2001 minus " + geburtsjahr + " sind " + alter + ".</H3><P>"); aus.println("Dann sind Sie also <b>" + alter + "</b> Jahre alt " + "- oder werden es noch in diesem Jahr </BODY></HTML>"); } } Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 27 HTML-Form-Passwort-Beispiel Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 28 HTML-Code zum Passwort-Beispiel <html> <head> <title>Hallo Kunde, Passwort bitte !</title> </head> Passwort-Felder für NICHT SICHTBARE interaktive Eingabe des Benutzers. Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 29 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher <body> <H3>Herzlich willkommen in unserem Internetshop! </H3> <p> <form method=get action="servlet/KenntKunde2"> Benutzername: < input type=text name=“anrede“ ><p> Passwort: < input type=password name=“code“ ><p> < input type=submit value=“Absenden“ > </form> </body> </html> Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 30 5 Servlet-Code zur Passwort-Abfrage Passwort abfragen in Java ... public void doGet ( HttpServletRequest req , HttpServletResponse res ) throws ServletException, IOException { ... String passwort = req.getParameter(“code“); if ( passwort.equals( “xy45!q%“ ) ) SeiteZeigen ( res ) ; else MeldungFalschesPasswort ( res ) ; } INPUT-Arten für HTML-Forms • • • • • • • • Submit-Knopf zum Abschicken der Eingabe Reset-Knopf zum Zurücksetzen der Eingabe Image (wirkt wie Submit) Checkbox Radio-Button Text : Feld zur sichtbaren Eingabe von Text Passwort: Feld zur Eingabe von Passwörtern NICHT SICHTBARE Hidden-Felder für Sitzungsinformationen. Seite generieren, je nachdem, ob Passwort o.K. Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 31 Sitzungen Hidden-Felder werden benutzt, um Informationen von einer Seite zur nächsten zu tragen. • Alternative 1: Alle bisher ausgetauschten Daten werden im Hiddenfeld codiert. • Alternative 2: Nur eine Session-Id wird im Hiddenfeld codiert, der Rest wird serverseitig gespeichert. Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 33 Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 32 Überblick über Internet-Technologien Server-Technologien XSP generiert HTML Servlet generiert HTML trennt Layout, Logik und Daten effizient / geht nur in Java JSP generiert HTML Java pendant zu ASP PHP generiert HTML eigene Sprache CGI generiert HTML nur HTML geht in jeder Sprache einfach Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 34 Überblick über Internet-Technologien Server-Technologien Datenbankkopplung XSP generiert HTML Servlet generiert HTML JSP generiert HTML PHP generiert HTML CGI generiert HTML Client-PGM ruft DB-Server Web-Server ruft DB-Server nur HTML nur HTML XML+XSL Dokumentsprachen nur HTML HTML+Javascript HTML+Applets Client-Technologien Webbasierte Informationssysteme - SS 2004 - Prof. Dr. Stefan Böttcher – Folie 35 Webbasierte Informationssysteme Prof. Dr. Stefan Böttcher 6