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 Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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 anderem Editor Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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 Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Übung: Web-Server starten und zugreifen Starten Sie Ihren Tomcat-Server : C:\tomcat\bin\startup.bat Speichern Sie das HTML-Dokument einstieg.html lokal als C:\tomcat\Webapps\Root\Start.html Ergänzen Sie Ihren Namen, bauen Sie Links zu einer Seite auf einem anderen Server ein. Laden Sie Ihre Webseite in den Netscape-Browser http://192.168.1.113:8080/Start.html Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Überblick: Web-Server mit Servlets Browser auf dem Client evtl. mit Eingaben ruft Web-Server HTML-Seiten evtl. Servlets Erzeugt HTMLSeite Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Servlet : erstes Beispiel Servlet-Ausgabe IP-Nummer Port (8080) des Web-Servers Servlet-Verzeichnis Servlet-Name Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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. Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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 ) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter aus = res.getWriter ( ); aus.println(“Herzlich willkommen in unserem Internetshop !"); } } Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Übung 2: Servlet übersetzen, auf dem Web-Server ablegen und zugreifen Arbeitsverzeichnis ist: C:\tomcat\webapps\Root\Web-inf\classes Ergänzen Sie im Programm Servlet1.java Ihren Namen Übersetzen Sie das Programm in der DOS-Box mit: C:\tomcat\...\classes> javac Servlet1.java Laden Sie das Servlet in den Netscape-Browser: http://192.168.1.113:8080/servlet/Servlet1 Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 HTML-Form-Beispiel Submit-Knopf Input-Feld Webseite Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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 Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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> Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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 ) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter aus = res.getWriter (); String kunde = req.getParameter("anrede"); aus.println("Ihre Name ist: "); aus.println( kunde ); } } Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Ausgabe des Servlets Ausgabe Servlet Parameter Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Alternative: Servlet generiert HTML-Code Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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>"); } } Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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 Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Ausgabe des Servlets Rechnet.class Servlet Parameter Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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>"); } } Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Übung: Währungsumrechnung Vorher: Nachher: Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 HTML-Form-Passwort-Beispiel Passwort-Felder für NICHT SICHTBARE interaktive Eingabe des Benutzers. Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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> Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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 ) ; } Seite generieren, je nachdem, ob Passwort o.K. Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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. Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 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. Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01 Servlets im Vergleich zu CGI CGI = Common Gateway Interface , Vorläufer von Servlets Vorteil von CGI: beliebige Sprache auf dem Server einsetzbar Vorteile von Servlets (Nachteile von CGI): Servlets können Threads verwenden => Servlets sind schneller (Jeder Web-Zugriff startet CGI-Programm in einem neuen Prozeß) Servlets sind portabel (CGI-Programme nur, falls in Java geschrieben) Servlets sind sicher (Sicherheitsrisiken von CGI: „inkorrekte“ Benutzereingaben) Datenbanken 2 - Der Tomcat-Webserver und Java-Servlets - Prof. Dr. Böttcher - WS2000/01