Beispiel: Web-Shop SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Applikation Software Client Web-Shop,... Web-Browser mit Applet,...??? Server Produkt- Datenbank Web-Server, Servlet Datenbank,... Hardware PC, Laptop, Handy,... Unix-Rechner, - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 2 IT- und TK-Infrastruktur Datenbankkopplung??? Applikation Client (Such-)Dienste, Web-Shop,... Netzwerk Server Kataloge, Dienste, Mall, Bank,... Software Web-Browser, Applet,... Middleware, Internet,... Web-Server, Datenbank-S.,... Hardware PC, Laptop, Handy,... Festnetz, Funknetz,... - SS 2004 - Prof. Dr. Stefan Böttcher Folie 3 Unix-Rechner,... Dokumentsprachen Client-Technologien - SS 2004 - Prof. Dr. Stefan Böttcher Folie 4 XSP Java Server Pages (JSP) Servlet generiert HTML PHP CGI generiert HTML trennt Layout / Logik / Daten trennt z.t. Layout / Logik / Daten effizient / geht nur in Java einfach generierte Webseiten geht in jeder Sprache einfach einfach (Firewalls+) HTML+Javascript schnell entwickelbare Animationen HTML+Applets Typ-sichere, wartbare Animationen Client-Technologien - SS 2004 - Prof. Dr. Stefan Böttcher Folie 5 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 6 Prof. Dr. Stefan Böttcher 1
Datenbankkopplung XML+XSL Dokumentsprachen (läuft auch in altem Browser) (trennt Layout und Inhalt, wartbar) entlastet Web-Server Client-PGM ruft DB-Server enge Kopplung Web-Server ruft Datenbankserver - SS 2004 - Prof. Dr. Stefan Böttcher Folie 7 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 8 3. Java-Webserver (1) Der Tomcat-Webserver Servlets HTML-Forms Session-Konzepte 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> Servlets mit Datenbank-Anbindung Variabler Teil Konstanter Teil - SS 2004 - Prof. Dr. Stefan Böttcher Folie 9 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 10 Java-Code zum generieren der Seite 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() ; - SS 2004 - Prof. Dr. Stefan Böttcher Folie 11 Tomcat Web-Server installieren 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 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 12 Prof. Dr. Stefan Böttcher 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 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 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 13 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 14 Überblick: Web-Server mit Servlets Servlet : erstes Beispiel Browser auf dem Client evtl. mit Eingaben ruft Erzeugt HTML- Seite Web-Server HTML-Seiten evtl. Servlets Servlet-Ausgabe IP-Nummer Port (8080) Servlet-Verzeichnis des Web-Servers Servlet-Name - SS 2004 - Prof. Dr. Stefan Böttcher Folie 15 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 16 Was ist ein Servlet? (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. Servlet-Code zum ersten Beispiel import java.io.* ; import javax.servlet.* ; import javax.servlet.http.* ; public class Servlet1 extends HttpServlet { public void doget ( HttpServletRequest req, HttpServletResponse res ) { res.setcontenttype("text/html"); PrintWriter aus = res.getwriter ( ); aus.println( Willkommen in unserem Internetshop!"); - SS 2004 - Prof. Dr. Stefan Böttcher Folie 17 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 18 Prof. Dr. Stefan Böttcher 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) Submit-Knopf Input-Feld Webseite - SS 2004 - Prof. Dr. Stefan Böttcher Folie 19 Eingaben werden z.b. in Servlets verarbeitet - SS 2004 - Prof. Dr. Stefan Böttcher Folie 20 HTML-Form-Code-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> - SS 2004 - Prof. Dr. Stefan Böttcher Folie 21 Servlet-Code zum Form Beispiel import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class KenntKunde extends HttpServlet { public void doget ( HttpServletRequest req, HttpServletResponse res ) { res.setcontenttype("text/html"); PrintWriter aus = res.getwriter (); String kunde = req.getparameter("anrede"); aus.println("ihre Name ist: "); aus.println( kunde ); - SS 2004 - Prof. Dr. Stefan Böttcher Folie 22 Ausgabe des Servlets Alternative: Servlet generiert HTML-Code Ausgabe Servlet Parameter - SS 2004 - Prof. Dr. Stefan Böttcher Folie 23 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 24 Prof. Dr. Stefan Böttcher 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 ) { 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>"); - SS 2004 - Prof. Dr. Stefan Böttcher Folie 25 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 Ausnahme-Behandlung - SS 2004 - Prof. Dr. Stefan Böttcher Folie 26 Ausgabe des Servlets Rechnet.class Servlet Parameter 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 ) { 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>"); - SS 2004 - Prof. Dr. Stefan Böttcher Folie 27 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 28 HTML-Form-Passwort-Beispiel Passwort-Felder für NICHT SICHTBARE interaktive Eingabe des Benutzers. - SS 2004 - Prof. Dr. Stefan Böttcher Folie 29 HTML-Code zum Passwort-Beispiel <html> <head> <title>hallo Kunde, Passwort bitte!</title> </head> <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> - SS 2004 - Prof. Dr. Stefan Böttcher Folie 30 Prof. Dr. Stefan Böttcher 5
Servlet-Code zur Passwort-Abfrage Passwort abfragen in Java... public void doget ( HttpServletRequest req, HttpServletResponse res ) {... String passwort = req.getparameter( code ); if ( passwort.equals( xy45!q% ) ) SeiteZeigen ( res ) ; else MeldungFalschesPasswort ( res ) ; Seite generieren, je nachdem, ob Passwort o.k. 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. - SS 2004 - Prof. Dr. Stefan Böttcher Folie 31 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 32 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. XSP generiert HTML trennt Layout, Logik und Daten Servlet generiert HTML effizient / geht nur in Java JSP generiert HTML PHP generiert HTML Java pendant zu ASP eigene Sprache CGI generiert HTML geht in jeder Sprache einfach - SS 2004 - Prof. Dr. Stefan Böttcher Folie 33 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 34 XSP generiert HTML Servlet generiert HTML JSP generiert HTML PHP generiert HTML CGI generiert HTML HTML+Javascript HTML+Applets XML+XSL Dokumentsprachen Datenbankkopplung Client-PGM ruft DB-Server Web-Server ruft DB-Server Client-Technologien - SS 2004 - Prof. Dr. Stefan Böttcher Folie 35 Prof. Dr. Stefan Böttcher 6