Web-Anbindung von Datenbanken

Slides:



Advertisements
Ähnliche Präsentationen
Java-Servlets Gliederung: Allgemeine Informationen zu Servlets
Advertisements

1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Software Engineering Praktikum SS 2003
Software Engineering Praktikum WS 2002/03
WWW Applikationen Vorlesung Anwendungssysteme. Lernziele: Wie funktioniert das WWW technisch? Welche Basis-Interaktionsmöglichkeiten bietet das WWW? Wie.
Internet-Datenbanken
Tomcat Web-Server installieren
Internetzugriff mit Strings und Streams
Java 2 Enterprise Edition (J2EE)
Ausnahmen HS Merseburg (FH) WS 06/07.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java News & Music Der Chat
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
Internet-Technologien und Java
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Dynamische Webseiten mit PHP
Dynamische Webseiten Java servlets.
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Datenbankanwendungen mit Java und JDBC
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Spezielle Aspekte der Anbindung von Datenbanken im Web.
Publikation von XML-Daten mit XSQL Pages. © Prof. T. Kudraß, HTWK Leipzig Vorteile von XSQL Pages einfache Generierung von XML-Dokumenten auf der Basis.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
JDBC Konzepte Realisierung von Zugriffen
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Filiale pea09 Die Einbindung der MySQL-Datenbank in das Servlet.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
JDBC EDV JDBC.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung MySQL mit PHP
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
JDBC: JAVA Database Connectivity
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Einführung Servlets/JSPs
Learning By Doing Thema 1: Dynamische Webseiten und Online Datenbanken (Jarka Arnold) Thema 2: Simulationen, Sound, Schnittstellen (Aegidius Plüss) Thema.
Applets Java für’s Web.
Seminar Internet - Technologie
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Java und Eclipse.
Servlets Servlets und relevantes API Servlets & SQL via JDBC Implementierungs - Spezifika Architektur Überblick Vertikaler Prototyp / Spezifikation.
Turbine Konzepte und Dienste
Datenanbindung in Webapplikationen
Einführung in PHP.
Einführung in PHP 5.
Datenanbindung in Web-Applikationen
Datenbankanbindung mit
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Datenbanken im Web 1.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche.
Java 2 Enterprise Edition (J2EE) Sascha Baumeister Software Architect Specification Lead JSR086 IBM Deutschland Entwicklung GmbH
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
1 JavaServer Pages Stephan Baldes JavaServer Pages Einführung
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
Internet-Technologien und Java
JDBC Java DataBase Connectivity
 Präsentation transkript:

Web-Anbindung von Datenbanken

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Web-Anbindung von Datenbanken 2.6.99 Web-Anbindung von Datenbanken

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

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 = "jdbc:oracle:thin:@jefe:1521:JEFE"; 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

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

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

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

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

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

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

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

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

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

Web-Anbindung von Datenbanken 2.6.99 Web-Anbindung von Datenbanken

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