Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Web-Anbindung von Datenbanken

Ähnliche Präsentationen


Präsentation zum Thema: "Web-Anbindung von Datenbanken"—  Präsentation transkript:

1 Web-Anbindung von Datenbanken

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

3 Web-Anbindung von Datenbanken
Warum Servlets? Servlets Motivation Tutorial Architektur/Design Sessions JDBC 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 } 2.6.99 Web-Anbindung von Datenbanken

4 Web-Anbindung von Datenbanken
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 2.6.99 Web-Anbindung von Datenbanken

5 Web-Anbindung von Datenbanken
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("<html>"); out.println("<body>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } 2.6.99 Web-Anbindung von Datenbanken

6 Web-Anbindung von Datenbanken
Servlets Motivation Tutorial Architektur/Design Sessions JDBC Beispiel 2: Request Info ( ... ) out.println("<html>"); out.println("<body>"); out.println("<head>"); out.println("<title>Request Information Example</title>"); out.println("</head>"); out.println("<h3>Request Information Example</h3>"); 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("</body>"); out.println("</html>"); 2.6.99 Web-Anbindung von Datenbanken

7 Web-Anbindung von Datenbanken
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); } 2.6.99 Web-Anbindung von Datenbanken

8 Web-Anbindung von Datenbanken
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) Enumeration e = request.getParamterNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getParamter(name); out.println(name + " = " + value); <html> <body> <form action="RequestParamExample" method=POST> Vorname: <input type=text size=20 name=firstname> <br> Nachname: <input type=text size=20 name=lastname> <input type=submit> </form> </body> </html> 2.6.99 Web-Anbindung von Datenbanken

9 Servlet Lebenszyklus Instantiation Initialisation Loading Ready
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 2.6.99 Web-Anbindung von Datenbanken

10 Web-Anbindung von Datenbanken
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 2.6.99 Web-Anbindung von Datenbanken

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

12 Web-Anbindung von Datenbanken
Servlets Motivation Tutorial Architektur/Design Sessions JDBC Trennen von Applikationscode und BSS (HTML) Schreiben Sie Ihren eigenen Page-Parser Klassenbibliotheken (Objekte exportieren HTML, Umweg über XML) WebMacro HTML hartcodiert (in print-Anweisungen in doGet/doPost) Pro: einfach für Programmierer Con: Web-Designer/Design Tools, Wartbarkeit Server Side Includes SSI (<SERVLET> 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 Servlet: Vector personen; contex.put("Persons",personen); Template: $foreach Person in Persons <TR> <TD>$Person.Name</TD> <TD>$Person.Vorname</TD> <TD>$Person.Telefon</TD> </TR> $end 2.6.99 Web-Anbindung von Datenbanken

13 Web-Anbindung von Datenbanken
Servlets Motivation Tutorial Architektur/Design Sessions JDBC HTTP ist zustandslos! Ursprünglich Request/Reply-Paradigma ECommerce, Electronic Banking …: Speichern von Zustandsinformation über Seitenzugriff / Browersitzung hinaus Techniken: URL Rewriting (<A HREF="nextpage.html;$sessionid$=AWEIRGTERUT">) Cookies 2.6.99 Web-Anbindung von Datenbanken

14 Servlet API für Sessions
Servlets Motivation Tutorial Architektur/Design Sessions JDBC 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 2.6.99 Web-Anbindung von Datenbanken

15 Beispiel: HttpSession
Servlets Motivation Tutorial Architektur/Design Sessions JDBC 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); Beliebiges Object 2.6.99 Web-Anbindung von Datenbanken

16 Web-Anbindung von Datenbanken
2.6.99 Web-Anbindung von Datenbanken

17 Datenbankanbindung in Java JDBC
Servlets JDBC Einführung Architekturen Klassenübersicht 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  2.6.99 Web-Anbindung von Datenbanken

18 Web-Anbindung von Datenbanken
1. Treiber laden 2. Verbindung zur DB herstellen 3. SQL-Anweisung erzeugen 4. Anweisung absenden 5. Ergebnisse verarbeiten #import java.io.*; #import java.sql.*; #import com.sybase.jdbc.*; #import java.util.*; ... 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); } Protokoll Unterprotokoll Oracle-spez. Rechner Port } 2.6.99 Web-Anbindung von Datenbanken

19 Web-Anbindung von Datenbanken
Servlets JDBC Einführung Architekturen Klassenübersicht 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 2.6.99 Web-Anbindung von Datenbanken

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

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

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

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

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

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

26 Web-Anbindung von Datenbanken
Servlets JDBC Einführung Architekturen Klassenübersicht 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, ...} 2.6.99 Web-Anbindung von Datenbanken

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

28 Web-Anbindung von Datenbanken
2.6.99 Web-Anbindung von Datenbanken

29 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 2.6.99 Web-Anbindung von Datenbanken


Herunterladen ppt "Web-Anbindung von Datenbanken"

Ähnliche Präsentationen


Google-Anzeigen