Internet, Java, Datenbank Internet , Java, Datenbank 1 Konzept statische und dynamische Internetseiten mit Java Applets, Servlets, Java Server Pages 2 Ablauf: Internet-Java-Datenbank zwei jsp-Seiten (eine statisch, eine dynamisch) die erste nimmt mit FORM die Parameter auf und sendet sie zum Server die zweite empfängt die Variablen, verwendet sie im Programm (z.B. beim Datenbankzugriff), empfängt die Reaktion der Datenbank, z.B. die Ergebnismenge, und erzeugt die Ausgabe 3 Beispiele dynamisch einfacher Datenbankzugriff mit parametrisiertem Datenbankzugriff mit gesamtem SQL-Befehl Text und Datum Pageaufruf Deklaration, Berechnung und Ausgabe einer Variablen HTML-Kommentare versteckte Kommentare Parameterweitergabe Aufruf 4 JSP-Einzelheiten Datentypen Operatoren, Ausdrücke Befehle Parameteraustausch zwischen Seiten Direktiven Kommentare 5 Installation JDK Apache Tomcat 6 Servlets 7 Adressen der TFH TFH Berlin/Steyer Internet, Java, Datenbank 1 Konzept Internet-Konzept Statische und dynamische Internetseiten Applets, Servlets, Java Server Pages Datei Java Server Page Applet Datenbank Ein Programm (z.B. MwSt-Berechnung) kann auf verschiedenen Ebenen ausgeführt werden: im Formular, im Serverprogramm, in der Datenbank. Einbettung : HTML-Code HTML-Code <% Java-Quellcode %> auf dem Server ausgeführte Ergebnisse auf dem Client Es können eingebettet werden: Deklarationen, Ausdrücke, Befehle, Kommentare (s.u.) Einbettungszeichen: <% für den Anfang %> für das Ende TFH Berlin/Steyer Internet, Java, Datenbank 2 Ablauf: Internet-Java-Datenbanl Client 1 Server 2 5 3 Datenbank 1 2 3 4 5 Statische Seite mit Formular zum Client Parameter und Aufruf zum Server zurück Verarbeiten durch dynamische Seite und evtl. Datenbankzugriff Ergebnisempfang und Erzeugung der Ergebnisseite Rücksendung zum Client TFH Berlin/Steyer 4 Internet, Java, Datenbank 3 Beispiele 3.1 Beispiel: dynamisch bsp1.jsp: <html> <body> <h1>Hello in verschiedener Grösse</h1> <form method = "GET" action="http://localhost:8080/bsp1ex.jsp"> <input type = "submit" value="Zeige"> </form> </body> </html> bsp1ex.jsp: <%@ page errorPage="errorpge.jsp" session="false" %> <html> <body> <h4>Erstellt am <%= new java.util.Date().toLocaleString()%></h4> <%int i=3;%> <%while (i <= 7) {%> <FONT SIZE=<%=i%>>Hello World</FONT><BR> <%i++; }%> </body> </html> 3.2 Beispiel: einfacher Datenbankzugriff db1.jsp: <%@ page import="java.sql.*" %> <html> <body> <h1 align="center">HALLO</h1> <h4 align="center">Erstellt am <%= new java.util.Date().toLocaleString()%></h4> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection("jdbc:odbc:accessdb","",""); Statement stmt = c.createStatement(); final String query = "Select pnr, pname from person"; ResultSet rs = stmt.executeQuery(query); %> <table border="1" bgcolor="#CCFFF"> <tr> <% int i = 1; while (rs.next()) {%> <tr><td align="center"><%= i%></td> <td><%= rs.getString(1)%></td> <td><%= rs.getString(2)%></td> </tr> TFH Berlin/Steyer Internet, Java, Datenbank <% i++;} %> </table> <% rs.close(); c.close(); %> </body> </html> 3.3 Beispiel: parametrisierter Datenbankzugriff bsp2.jsp: <html> <body> <h1>Kontostand abfragen</h1> <form method = "GET" action="http://localhost:8080/bsp2db.jsp"> Name: <input type = "text" name = "us"> <br> <br> <input type = "submit" value="Kontostand"> </form> </body> </html> bsp2db.jsp: <%@ page errorPage="errorpge.jsp" import="java.sql.*" session="false" %> <html> <body> <h4 align="center">Erstellt am <%= new java.util.Date().toLocaleString()%></h4> <%String us = request.getParameter("us");%> <h3>us=</h3> <%=us%> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection("jdbc:odbc:accessdb","",""); Statement stmt = c.createStatement(); final String query = "Select kundenname, pin, kontostand from kunde where kundenname = \'" + us + "\'"; ResultSet rs = stmt.executeQuery(query); %> <table border="1" bgcolor="#CCFFF" cellpadding="3" cellspacing="0"> <% while (rs.next()) {%> <tr><td><%= rs.getString(1)%></td> <td><%= rs.getString(2)%></td> <td><%= rs.getString(3)%></td> </tr> <%}%> </table> <% rs.close(); c.close(); %> TFH Berlin/Steyer Internet, Java, Datenbank </body> </html> 3.4 Beispiel: mit gesamtem SQL-Befehl bsp3.jsp: <html> <body> <h1>SQL-Befehl ausführen</h1> <form method = "GET" action="http://localhost:8080/bsp3db.jsp"> <input type = "text" name = "bef" size=50> <br><br> <input type = "submit" value="ausführen"> </form> </body> </html> bsp3db.jsp: <%@ page errorPage="errorpge.jsp" import="java.sql.*" session="false" %> <html> <body> <h4 align="center">Erstellt am <%= new java.util.Date().toLocaleString()%></h4> <%String bef = request.getParameter("bef");%> <h3>bef=</h3> <%=bef%> <% if (bef.indexOf("select") <= 0) { %> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection("jdbc:odbc:accessdb","",""); Statement stmt = c.createStatement(); ResultSet rs = stmt.executeQuery(bef); ResultSetMetaData rsmd = rs.getMetaData(); int n = rsmd.getColumnCount(); %> <h3>n=</h3> <%=n%> <table border="1" bgcolor="#CCFFF" cellpadding="3" cellspacing="0"> <% while (rs.next()) {%> <tr> <%int i=1;%> <% while (i <= n) { %> <td><%=rs.getString(i) %></td> <%i++; }%> </tr> <%}%> </table> <% rs.close(); c.close(); } else { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection("jdbc:odbc:accessdb","",""); Statement stmt = c.createStatement(); TFH Berlin/Steyer Internet, Java, Datenbank stmt.execute(bef); } %> </body> </html> 3.5 Beispiel: Text und Datum <html> <body> <h1 align="center">HALLO</h1> <h4 align="center">Erstellt am <%= new java.util.Date().toString()%></h4> </body> </html> 3.6 Beispiel: Pageaufruf datum.htm: <html> <body> <h1>Kontostand abfragen</h1> <form method = "POST" action="http://localhost:8080/dat.jsp"> <table> <tr><td>Name:</td> <td><input type = "text" name = "us"></td></tr> <tr><td>PIN:</td> <td><input type = "password" name = "pa"></td></tr> </table> <br> <input type = "submit" value="Kontostand"> </form> </body> </html> dat.jsp: <font color="red"> Aktuelles Datum: <%@ include file="datum.jsp" %> </font> datum.jsp <%@ page import="java.util.Date" %> <%= (new java.util.Date()).toLocaleString() %> TFH Berlin/Steyer Internet, Java, Datenbank 3.7 Deklaration, Berechnung und Ausgabe einer Variablen variable.jsp: <html> <body> <% int i = 1;%> <h3> i = </h3> <%= i%> <br> <br> <% i = i + 1;%> <h3> jetzt i = </h3> <%= i%> </body> </html> 3.8 HTML-Kommentare <!-- comment [ <%= Ausdruck%> ] -–> wird unverändert übernommen. 3.9 versteckte Kommentare <%-- comment --%> wird nicht in den HTML-Code aufgernommen. 3.10 Parameterweitergabe mit zwei Seiten: seite1.jsp <html> <body> <h1>Parameter weitergeben</h1> <form method = "GET" action="http://localhost:8080/seite2.jsp"> <tr><td>Name:</td><td><input type = "text" name = "us"></td></tr> <br> <input type = "submit" value="us-Weitergabe"> </form> </body> </html> seite2.jsp <html> <body> <%String us2 = request.getParameter("us");%> <h3> us2 = </h3> <%= us2 %> </body> </html> TFH Berlin/Steyer Internet, Java, Datenbank mit einer Seite: seite.jsp <html> <body> <h1>Parameter weitergeben in einer Seite</h1> <form method = "GET"> Name:<input type = "text" name = "us"> <br> <input type = "submit" value="us-Weitergabe"> </form> <%String us2 = request.getParameter("us");%> <h3> us2 = </h3> <%= us2 %> </body> </html> 3.11 Aufruf: Tomcat starten C:\Programme\Apache Group\Tomcat 4.1\webapps\ROOT\<pgm> http:/localhost:8080/db1.jsp Tomcat stoppen TFH Berlin/Steyer Internet, Java, Datenbank 4 JSP-Einzelheiten Datentypen Operatoren, Ausdrücke Befehle Parameteraustausch zwischen Seiten Direktiven Kommentare 5 Installation JDK (Java Compiler), herunterladen von http://java.sun.com Apache Tomcat (Webserver), herunterladen von http://Jakarta.Apache.org Der Webserver muss vor jeder Benutzung gestartet werden. JSP-Seiten mit Extension *.jsp müssen im Verzeichnis C:/Programme/Apache Group/Tomcat/webapps/ROOT abgelegt werden. Dann werden sie von einem normalen Web-Browser aufgerufen. 6 Servlets 7 Adressen der TFH dbl97: 141.64.89.197 dbl98: 141.64.89.178 TFH Berlin/Steyer