Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Web-Anbindung von Datenbanken. 2.6.99Web-Anbindung von Datenbanken2 Übersicht Applikationslogik auf dem Web-Server: Servlets –Motivation –Servlet-Tutorial.

Ähnliche Präsentationen


Präsentation zum Thema: "Web-Anbindung von Datenbanken. 2.6.99Web-Anbindung von Datenbanken2 Übersicht Applikationslogik auf dem Web-Server: Servlets –Motivation –Servlet-Tutorial."—  Präsentation transkript:

1 Web-Anbindung von Datenbanken

2 2.6.99Web-Anbindung von Datenbanken2 Übersicht Applikationslogik auf dem Web-Server: Servlets –Motivation –Servlet-Tutorial –Architektur, Trennung von Applikation und Präsentation –Session-Management Datenbankanbindung in Java: JDBC

3 2.6.99Web-Anbindung von Datenbanken3 HTTP: Anforderung von Dokumenten Problem: Dynamik Lösungen: –Client-seitig JavaScript, Applets –Server-seitig CGI, ASP, LiveWire, PHP... Servlets: –Standard-API –Plattformunabhängig Java –Lightweight threads –Stabil Servlets Motivation Tutorial Architektur/Design Sessions JDBC } Warum Servlets?

4 2.6.99Web-Anbindung von Datenbanken4 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Java Servlet Development Kit JSDK 2.0 ~ag-db/sw/packages/JSDK2.0 Zwei Packages: javax.servlet javax.servlet.http CLASSPATH enthält ~ag-db/sw/packages/JSDK2.0/lib/jsdk.jar Pfade, Referenzen usw. siehe Projektauftrag

5 2.6.99Web-Anbindung von Datenbanken5 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Beispiel 1: Einfaches Servlet import java.io.*; import java.servlet.*; import javax.servlet.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" Hello World! "); out.println(" "); out.println(" Hello World! "); out.println(" "); }

6 2.6.99Web-Anbindung von Datenbanken6 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Beispiel 2: Request Info (... ) out.println(" "); out.println(" Request Information Example "); out.println(" "); out.println(" Request Information Example "); out.println("Method: " + request.getMethod()); out.println("Request URI: " + request.getRequestURI()); out.println("Protocol: " + request.getProtocol()); out.println("PathInfo: " + request.getPathInfo()); out.println("Remote Address: " + request.getRemoteAddr()); out.println(" "); (... )

7 2.6.99Web-Anbindung von Datenbanken7 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Beispiel 3: Request Header import java.io.*; import java.servlet.*; import javax.servlet.*; public class RequestHeaderExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); Enumeration e = request.getHeaderNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getHeader(name); out.println(name + " = " + value); }

8 2.6.99Web-Anbindung von Datenbanken8 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Beispiel 4: Request Parameters public class RequestParamExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("GET Request. No Form Data Posted"); } public void doPost(HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException { Enumeration e = request.getParamterNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getParamter(name); out.println(name + " = " + value); } Vorname: Nachname:

9 2.6.99Web-Anbindung von Datenbanken9 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Servlet Lebenszyklus Instantiation Loading Initialisation init(ServletConfig config) Ready service(ServletRequest req, ServletResponse res) doGet(ServletRequest req, ServletResponse res) doPost(ServletRequest req, ServletResponse res) Destruction destroy() Garbage Collection

10 2.6.99Web-Anbindung von Datenbanken10 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Web-Server-Konfiguration und URLs Standard-Web-Server unterstützen Servlets JSDK liefert Web-Server mit (Doku siehe Projektauftrag) servletrunner Property-Dateien assoziieren URL mit Servlet Servlet kann unter vielen Namen angesprochen werden

11 2.6.99Web-Anbindung von Datenbanken11 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Architektur einer Web-Applikation Browser Datenbankserver Business-Objekte Datenbankzugriff Business-Objekte Servlets JDBC Web Server Presentation Layer Business Layer Data Access Layer

12 2.6.99Web-Anbindung von Datenbanken12 Servlets Motivation Tutorial Architektur/Design Sessions JDBC Trennen von Applikationscode und BSS (HTML) HTML hartcodiert (in print -Anweisungen in doGet/doPost) Pro: einfach für Programmierer Con: Web-Designer/Design Tools, Wartbarkeit Server Side Includes SSI ( tag in HTML) Pro: Trennung von BSS und Code Con: Entweder Servlet druckt Häppchen ohne HTML oder man hat wieder hartcodiertes HTML Templates (for common parts of all pages) Pro: Arbeitsersparnis, Wartbarkeit Con: wie SSI Java Server Pages JSP Pro: Nur eine Datei für Code und BSS, kein print Con: Wieder Mix von Applikation und HTML  JavaBeans Schreiben Sie Ihren eigenen Page-Parser Klassenbibliotheken (Objekte exportieren HTML, Umweg über XML) WebMacro Servlet: Vector personen; contex.put("Persons",personen); Template: $foreach Person in Persons $Person.Name $Person.Vorname $Person.Telefon $end

13 2.6.99Web-Anbindung von Datenbanken13 HTTP ist zustandslos! Ursprünglich Request/Reply-Paradigma ECommerce, Electronic Banking …: Speichern von Zustandsinformation über Seitenzugriff / Browersitzung hinaus Techniken: –URL Rewriting ( ) –Cookies Servlets Motivation Tutorial Architektur/Design Sessions JDBC

14 2.6.99Web-Anbindung von Datenbanken14 Servlet API für Sessions javax.servlet.http.Cookie Viel bequemer und mächtiger: javax.servlet.http.HttpSession –Cookies/URL Rewriting transparent für Entwickler –Objekte werden gespeichert –Auch über Servlet-Grenzen hinweg Servlets Motivation Tutorial Architektur/Design Sessions JDBC

15 2.6.99Web-Anbindung von Datenbanken15 Beispiel: HttpSession HttpSession session = request.getSession(true); out.println("ID " + session.getId()); out.println("Created: " + session.getCreationTime()); out.println("Last Accessed: " + session.getLastAccessedTime()); String dataName = request.getParameter("dataName"); if (dataName != null && dateName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.putValue(dataName, dataValue); } String[] valueNames = session.getValueNames(); if (valueNames != null && valueNames.length > 0) { for (int i = 0; i < valueNames.length; i++) { String name = valueNames[i]; String value = session.getValue(name).toString(); out.println(name + " = " + value); } Servlets Motivation Tutorial Architektur/Design Sessions JDBC Beliebiges Object

16 2.6.99Web-Anbindung von Datenbanken16

17 2.6.99Web-Anbindung von Datenbanken17 Datenbankanbindung in Java JDBC Was ist JDBC? –ODBC = Open Database Connectivity –JavaSoft-Spezifikation für herstellerunabhängiges API zum Zugriff auf SQL-Datenbankmanagementsysteme in –Klassen-/Schnittstellensammlung Funktioniert auch in Servlets Servlets JDBC Einführung Architekturen Klassenübersicht

18 2.6.99Web-Anbindung von Datenbanken18 Class.forName("oracle.jdbc.driver.OracleDriver"); String url = Connection con = DriverManager.getConnection( url, "aws ", "********"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery( "SELECT name, e_mail FROM adressen"); while (rs.next()) { String n = rs.getString("name"); String n = rs.getString("e_mail"); System.out.println(s + ": " + n); } #import java.io.*; #import java.sql.*; #import com.sybase.jdbc.*; #import java.util.*; Treiber laden 2. Verbindung zur DB herstellen 3. SQL-Anweisung erzeugen 4. Anweisung absenden 5. Ergebnisse verarbeiten } Protokoll Unterprotokoll Oracle-spez. Rechner Port

19 2.6.99Web-Anbindung von Datenbanken19 Treiber Übersetzt JDBC-Aufrufe in DB-(Hersteller-)spezifische Aufrufe Verschiedene Typen Beispiel: com.sybase.jdbc.SybDriver aus jConnect Laden mit Class Loader: Class.forName("com.... SybDriver");  Dynamisch konfigurierbar Servlets JDBC Einführung Architekturen Klassenübersicht

20 2.6.99Web-Anbindung von Datenbanken20 DBMS 2-Schicht-Architektur: JDBC Java-Anwendung Client-Rechner DBMS-eigenes Protokoll Datenbank-Server Servlets JDBC Einführung Architekturen Klassenübersicht

21 2.6.99Web-Anbindung von Datenbanken21 DBMS 3-Schicht-Architektur: JDBC Anwendungsserver Client-Maschine (GUI) DBMS-eigenes Protokoll Datenbank-Server Servlets JDBC Einführung Architekturen Klassenübersicht Anwendungsserver (Geschäftsprozesse) HTTP, RMI, CORBA Java-Applet oder WWW-Browser

22 2.6.99Web-Anbindung von Datenbanken22 Das java.sql Package Wichtig sind zunächst folgende Klassen/Schnittstellen/Ausnahmen : –DriverManager –Connection –Statement –ResultSet –SQLException Servlets JDBC Einführung Architekturen Klassenübersicht

23 2.6.99Web-Anbindung von Datenbanken23 java.sql.DriverManager Verwaltet Treiber Treiber werden durch Aufruf von Class.forName("DriverClassName") registriert Methoden: Connection getConnection(String url,...); Servlets JDBC Einführung Architekturen Klassenübersicht

24 2.6.99Web-Anbindung von Datenbanken24 java.sql.Connection Repräsentiert Verbindung zur Datenbank Senden von SQL-Anweisungen Methoden: Statement createStatement(); void close(); Servlets JDBC Einführung Architekturen Klassenübersicht

25 2.6.99Web-Anbindung von Datenbanken25 java.sql.Statement Ausführung von Anweisungen Abfrage von Ergebnissen Drei Typen Methoden: ResultSet executeQuery(String); int executeUpdate(String); void close(); Servlets JDBC Einführung Architekturen Klassenübersicht

26 2.6.99Web-Anbindung von Datenbanken26 java.sql.ResultSet Tabelle mit Ergebnis einer Anweisung Iterieren mit boolean next(); Zugriff auf Spaltenwerte mit Type getType(String columnName); oder Type getType(int columnIndex); Type = {String, Boolean, Byte, Int, Float,...} Servlets JDBC Einführung Architekturen Klassenübersicht

27 2.6.99Web-Anbindung von Datenbanken27 java.sql.SQLException Methoden: String getSQLState(); int getSQLErrorCode(); SQLException getNextException(); Servlets JDBC Einführung Architekturen Klassenübersicht

28 2.6.99Web-Anbindung von Datenbanken28

29 2.6.99Web-Anbindung von Datenbanken29 Property-Class-Generator PropTest.snippet : /* This file was generated by PropClassGen from PropTest.prp */ import java.util.*; import java.io.*; public class PropTest { public static Properties properties_; public static String TEST_PRP, TEST_HELLO; static { properties_ = new Properties(); try { properties_.load( new BufferedInputStream( new FileInputStream( "/home/sahib/weber/java/mail//PropTest.prp"))); } catch (Exception e) { System.out.println(e.getMessage()); } TEST_PRP = properties_.getProperty("test.prp"); TEST_HELLO = properties_.getProperty("test.hello"); } PropTest.prp ________________________ test.prp=hello, world test.hello=its me


Herunterladen ppt "Web-Anbindung von Datenbanken. 2.6.99Web-Anbindung von Datenbanken2 Übersicht Applikationslogik auf dem Web-Server: Servlets –Motivation –Servlet-Tutorial."

Ähnliche Präsentationen


Google-Anzeigen