Web-Anbindung von Datenbanken - PowerPoint PPT Presentation

About This Presentation
Title:

Web-Anbindung von Datenbanken

Description:

Web-Anbindung von Datenbanken bersicht Applikationslogik auf dem Web-Server: Servlets Motivation Servlet-Tutorial Architektur, Trennung von Applikation und ... – PowerPoint PPT presentation

Number of Views:152
Avg rating:3.0/5.0
Slides: 30
Provided by: Daniel1136
Category:

less

Transcript and Presenter's Notes

Title: Web-Anbindung von Datenbanken


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

3
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
Warum Servlets?
  • 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


4
Servlets Motivation Tutorial Architektur/Design Se
ssions 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
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
Beispiel 1 Einfaches Servlet
import java.io. import java.servlet. import
javax.servlet. public class HelloWorld extends
HttpServlet public void doGet(HttpServletRe
quest request, HttpServletResponse response)
throws IOException, ServletException
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println("lthtmlgt") out.println("ltbodygt
") out.println("ltheadgt")
out.println("lttitlegtHello World!lt/titlegt")
out.println("lt/headgt")
out.println("ltbodygt") out.println("lth1gtHe
llo World!lt/h1gt") out.println("lt/bodygt")
out.println("lt/htmlgt")
6
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
Beispiel 2 Request Info
( ... ) out.println("lthtmlgt")
out.println("ltbodygt")
out.println("ltheadgt")
out.println("lttitlegtRequest Information
Examplelt/titlegt") out.println("lt/headgt")
out.println("ltbodygt")
out.println("lth3gtRequest Information
Examplelt/h3gt") out.println("Method "
request.getMethod()) out.println("Reques
t URI " request.getRequestURI())
out.println("Protocol " request.getProtocol())
out.println("PathInfo "
request.getPathInfo())
out.println("Remote Address "
request.getRemoteAddr())
out.println("lt/bodygt")
out.println("lt/htmlgt") ( ... )
7
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
Beispiel 3 Request Header
import java.io. import java.servlet. import
javax.servlet. public class RequestHeaderExampl
e 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
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
Beispiel 4 Request Parameters
public class RequestParamExample extends
HttpServlet public void doGet(HttpServletRe
quest 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)

9
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
Servlet Lebenszyklus
10
Servlets Motivation Tutorial Architektur/Design Se
ssions 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
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
Architektur einer Web-Applikation
Browser
Presentation Layer
Business-Objekte
Business-Objekte
Business Layer
Web Server
Datenbankzugriff
Data Access Layer
JDBC
Datenbankserver
12
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
Trennen von Applikationscode und BSS (HTML)
Schreiben Sie Ihren eigenen Page-Parser Klassenbib
liotheken (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 (ltSERVLETgt
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 ltTRgt ltTDgtPerson.Namelt/TDgt ltTDgtPerson.
Vornamelt/TDgt ltTDgtPerson.Telefonlt/TDgt lt/TRgt
end
13
HTTP ist zustandslos!
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
  • Ursprünglich Request/Reply-Paradigma
  • ECommerce, Electronic Banking Speichern von
    Zustandsinformation über Seitenzugriff /
    Browersitzung hinaus
  • Techniken
  • URL Rewriting (ltA HREF"nextpage.htmlsessionid
    AWEIRGTERUT"gt)
  • Cookies

14
Servlet API für Sessions
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
  • javax.servlet.http.Cookie
  • Viel bequemer und mächtigerjavax.servlet.http.Ht
    tpSession
  • Cookies/URL Rewriting transparent für Entwickler
  • Objekte werden gespeichert
  • Auch über Servlet-Grenzen hinweg

15
Beispiel HttpSession
Servlets Motivation Tutorial Architektur/Design Se
ssions JDBC
  • HttpSession session request.getSession(tru
    e)
  • out.println("ID " session.getId())
  • out.println("Created "
    session.getCreationTime())
  • out.println("Last Accessed "
    session.getLastAccessedTime())
  • String dataName request.getParameter("da
    taName")
  • if (dataName ! null dateName.length()
    gt 0)
  • String dataValue request.getParamete
    r("dataValue")
  • session.putValue(dataName,
    dataValue)
  • String valueNames session.getValueNames(
    )
  • if (valueNames ! null
    valueNames.length gt 0)
  • for (int i 0 i lt
    valueNames.length i)
  • String name valueNamesi
  • String value session.getValue(na
    me).toString()
  • out.println(name " "
    value)

Beliebiges Object
16
(No Transcript)
17
Datenbankanbindung in Java JDBC
Servlets JDBC Einführung Architekturen Klassenüber
sicht
  • Was ist JDBC?
  • ODBC Open Database Connectivity
  • JavaSoft-Spezifikation für herstellerunabhängiges
    API zum Zugriff auf SQL-Datenbankmanagementsyste
    mein
  • Klassen-/Schnittstellensammlung

Funktioniert auch in Servlets ?
18
import java.io. import java.sql. import
com.sybase.jdbc. import java.util. ...
  • Class.forName("oracle.jdbc.driver.OracleDriver")
  • String url "jdbcoraclethin_at_jefe1521JEFE"
  • 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.p
    rintln(s " " n)

19
Treiber
Servlets JDBC Einführung Architekturen Klassenüber
sicht
  • Übersetzt JDBC-Aufrufe in DB-(Hersteller-)spezifi
    sche Aufrufe
  • Verschiedene Typen
  • Beispiel com.sybase.jdbc.SybDriveraus jConnect
  • Laden mit Class Loader Class.forName("com. ...
    SybDriver")
  • ? Dynamisch konfigurierbar

20
2-Schicht-Architektur
Servlets JDBC Einführung Architekturen Klassenüber
sicht
Java-Anwendung
Client-Rechner
JDBC
DBMS-eigenes Protokoll
DBMS
Datenbank-Server
21
3-Schicht-Architektur
Servlets JDBC Einführung Architekturen Klassenüber
sicht
Java-Applet oder WWW-Browser
Client-Maschine (GUI)
HTTP, RMI, CORBA
Anwendungsserver
Anwendungsserver (Geschäftsprozesse)
JDBC
DBMS
DBMS-eigenes Protokoll
Datenbank-Server
22
Das java.sql Package
Servlets JDBC Einführung Architekturen Klassenüber
sicht
  • Wichtig sind zunächst folgende Klassen/Schnittstel
    len/Ausnahmen
  • DriverManager
  • Connection
  • Statement
  • ResultSet
  • SQLException

23
java.sql.DriverManager
Servlets JDBC Einführung Architekturen Klassenüber
sicht
  • Verwaltet Treiber
  • Treiber werden durch Aufruf von
    Class.forName("DriverClassName") registriert
  • MethodenConnection getConnection(String
    url,...)

24
java.sql.Connection
Servlets JDBC Einführung Architekturen Klassenüber
sicht
  • Repräsentiert Verbindung zur Datenbank
  • Senden von SQL-Anweisungen
  • MethodenStatement createStatement()void
    close()

25
java.sql.Statement
Servlets JDBC Einführung Architekturen Klassenüber
sicht
  • Ausführung von Anweisungen
  • Abfrage von Ergebnissen
  • Drei Typen
  • MethodenResultSet executeQuery(String)int
    executeUpdate(String)void close()

26
java.sql.ResultSet
Servlets JDBC Einführung Architekturen Klassenüber
sicht
  • Tabelle mit Ergebnis einer Anweisung
  • Iterieren mit boolean next()
  • Zugriff auf Spaltenwerte mit Type getType(String
    columnName)oderType getType(int
    columnIndex)Type String, Boolean, Byte, Int,
    Float, ...

27
java.sql.SQLException
Servlets JDBC Einführung Architekturen Klassenüber
sicht
  • MethodenString getSQLState()int
    getSQLErrorCode()SQLException
    getNextException()

28
(No Transcript)
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")

PropTest.prp ________________________ test.prphe
llo, world test.helloits me
Write a Comment
User Comments (0)
About PowerShow.com