EINFACHE WEBANWENDUNGEN BASIEREND AUF JAVA, HTML, JSP, HIBERNATE ANNOTATIONS UND MYSQL - NOVEMBER 2012

Die Seite wird erstellt Leonard Janssen
 
WEITER LESEN
EINFACHE WEBANWENDUNGEN BASIEREND AUF JAVA, HTML, JSP, HIBERNATE ANNOTATIONS UND MYSQL - NOVEMBER 2012
Einfache Webanwendungen
 basierend auf Java, HTML, JSP,
Hibernate Annotations und MySQL
               21. November 2012

Taentzer   Modellgetriebene Softwareentwicklung   200
EINFACHE WEBANWENDUNGEN BASIEREND AUF JAVA, HTML, JSP, HIBERNATE ANNOTATIONS UND MYSQL - NOVEMBER 2012
Überblick
 Unsere Referenzanwendung: eine simple
  Webanwendung für eine Konferenz
 Verwendete Technologien:
      Anwendung: Java, HTML, Java Server Pages, Hibernate
       Annotation, MySQL
      Anwendungsserver: Jboss
 Vorstellung der Plattform:
      Datenhaltung in einer MySQL-Datenbank
      O/R-Mapping durch Hibernate Annotations
      Wie erstellt man dynamische Webseiten?

Taentzer                Modellgetriebene Softwareentwicklung   201
EINFACHE WEBANWENDUNGEN BASIEREND AUF JAVA, HTML, JSP, HIBERNATE ANNOTATIONS UND MYSQL - NOVEMBER 2012
Webanwendungen
       Client-seitig                                 Server-seitig

                           http-Anfrage
                                                                 Web-
                                                               anwendung

                            http-Antwort

                                                Anwendung-
                                                  Server
                                                         persistente Daten

Taentzer               Modellgetriebene Softwareentwicklung          202
EINFACHE WEBANWENDUNGEN BASIEREND AUF JAVA, HTML, JSP, HIBERNATE ANNOTATIONS UND MYSQL - NOVEMBER 2012
Funktionsablauf
 Benutzer startet Webanwendung, gibt die URL des
  Webanwendung ein.
 Anwendung-Server leitet die Anfrage an die Webanwendung
  weiter.
 Webanwendung generiert den HTML-Code einer Webseite, die
  vom Anwendung-Server an den Browser des Benutzers
  zurückgeschickt wird.
 Browser zeigt die erhaltene Webseite an.

Taentzer              Modellgetriebene Softwareentwicklung   203
Welche Aspekte von Webanwendungen
         müssen modelliert werden?
Präsentationsschicht:
    Wie soll die Weboberfläche
     aussehen?
    Welche Daten sollen an der
     Oberfläche angezeigt werden?
Services:
    Welche Services haben wir?
    Wie sind die Services definiert?
Datenzugriffsschicht:
    Welche Datenstrukturen werden
     verwendet?
Datenbankschicht:
    Welche Daten soll persistent sein?
    Wie sollen die Daten in der
     Datenbank gespeichert werden?
                                                                        aus „AndroMDA.org“

Taentzer                         Modellgetriebene Softwareentwicklung                  204
Aufbau einer Webanwendung
 Konfigurationsdaten:
      WebContent\WEB-INF
 Präsentation:
      WebContent: JSP-Seiten
      Webcontent/styles: CSS-Styles
 Servlets:
      src/(default package)
 Datenhaltung:
      src/daos: CRUD-Operationen
      src/entities: Entitätsklassen

Taentzer                       Modellgetriebene Softwareentwicklung   205
MySQL
   Managementsystem für relationale Datenbanken
   frei verfügbar, plattformunabhängig
   Anfragesprache: SQL
   Client-Server-System:
      Server: Datenbanksystem, das Datenbanken verwaltet und
       Anfragen zum Inhalt seiner Datenbanken bearbeitet (z.B.
       MySQL)
      Client: Anwendung, die eine Datenbank verwendet
 Eigenschaften:
      Mehrbenutzersystem
      mehrere Threads
      Verwaltung von Zugriffsberechtigungen

Taentzer                Modellgetriebene Softwareentwicklung   206
Datenbankschema
 beschreibt die Struktur einer Datenbank
 Menge von Tabellen
 Beispiel: Tabelle Vorlesung
      Tabellenspalten (Datenfelder): Nummer, Titel, Raum, Dozent
      Tabellenzeilen: einzelne Datensätze
       (L123, „Software-Praktikum“, D12,..)
 Beziehungen zwischen Tabellen:
      durch Schlüssel
       Vorlesung: (L123, „Software-Praktikum“, D12, 1)
       Dozent: (1, „Meier“, „Hans“)

Taentzer                 Modellgetriebene Softwareentwicklung   207
MySQL Workbench
   zur Verwaltung der MySQL-Umgebung
   Benutzerverwaltung mit Zugriffsrechten
   Wartung der Datenbank
   In Server Administration -> Accounts

Taentzer                 Modellgetriebene Softwareentwicklung   208
Überblick über Datenschemata
       und Tabelleninhalt

Taentzer    Modellgetriebene Softwareentwicklung   209
Eine kleine Einführung in SQL
 Anfragesprache für relationale Datenbanken
 Aufbau einer SQL-Anfrage:
          SELECT     Auswahl der Attribute
          FROM       Tabellenname(n)
          WHERE      Bedingungen für die Auswahl (optional)
          GROUP BY   Gruppieren der Ergebnisse (optional)
          ORDER BY   Reihenfolge der Ausgaben (optional)
 Ergebnis wird als Tabelle zurückgegeben.
 SQL Anfragen können im MySQL Query Browser
  gestellt werden.
 Auch zum Einfügen und Löschen von Datensätzen
      INSERT und DELETE
Taentzer                 Modellgetriebene Softwareentwicklung   210
Hibernate Annotations
 O/R-Mapping innerhalb von Java-Klassen
  (Entitätsklassen)
 Ähnliche, aber detailliertere Angaben als in EMF-
  Modellen -> integriertes Modell
 Dokumentation:
      http://docs.jboss.org/hibernate/annotations/3.5/reference/en/
       html/index.html

Taentzer                  Modellgetriebene Softwareentwicklung    211
Hibernate Annotation:
                 Initialisierung

 Alternativ kann die Deklaration der annotierten Klassen auch direkt auf
 der SessionFactory in HibernateUtil.java programmiert werden.

Taentzer                    Modellgetriebene Softwareentwicklung           212
O/R-Mapping über Annotationen
Mögliche Annotationen:
@Entity – Entität induziert Tabelle
@Id – Primärschüssel
@GeneratedValue – Schlüssel-
generierung
@Table – explizite
Tabellendefinition
@Version – zur Erkennung von
konfliktbehafteten Änderungen
@Column - Spaltendefinition
@Inheritance – Vererbung:
  strategy= TABLE_PER_CLASS,
           JOINED, SINGLE_TABLE

Taentzer                     Modellgetriebene Softwareentwicklung   213
Datenzugriffsobjekte
    Data Access Object (DAO)
    Der Datenzugriff kann je nach Speichermedium stark variieren.
    Ziel: Kapselung der Zugriffe auf ein Speichermedium
    Speziell: Entkopplung einer Anwendung vom Datenbankzugriff

                                                        aus „java.sun.com“

Taentzer                 Modellgetriebene Softwareentwicklung                214
Datenzugriffsobjekte
 BusinessObject:
    Datenkunde
    fordert Daten an
 DataAccessObject:
    Zugriffsschnittstelle
    abstrahiert von der
     unterliegenden
     Datenimplementierung
 DataSource:
    die eigentliche
     Datenquelle
    Datenbank, Datei,...
 TransferObject:
    Datenträger zum
     Übertragen von Daten
                                                                    aus „java.sun.com“

   Taentzer                  Modellgetriebene Softwareentwicklung                   215
Eigenschaften der Datenzugriffsschicht

 ermöglicht Transparenz
      Services und Controller müssen nichts über die eigentliche
       Datenhaltung wissen.
 ermöglicht leichtere Migration
      Die Datenhaltung kann geändert werden.
 reduziert die Codekomplexität in Service- und
  Controllerklassen
 fasst jeglichen Datenzugriff in eine separate Ebene
  zusammen
      Die zusätzliche Ebene muss entworfen und implementiert
       werden.
      Sie kann auch automatisch generiert werden.
Taentzer                 Modellgetriebene Softwareentwicklung   216
Eine DAO-Klasse

Taentzer      Modellgetriebene Softwareentwicklung   217
Hibernate: Zugriff auf die
HibernateUtil.java: SessionFactory

   Taentzer         Modellgetriebene Softwareentwicklung   218
Welche Aspekte von Webanwendungen
         müssen modelliert werden?
Präsentationsschicht:
    Wie soll die Weboberfläche
     aussehen?
    Welche Daten sollen an der
     Oberfläche angezeigt werden?
Services:
    Welche Services haben wir?
    Wie sind die Services definiert?
Datenzugriffsschicht:
    Welche Datenstrukturen werden
     verwendet?
Datenbankschicht:
    Welche Daten soll persistent sein?
    Wie sollen die Daten in der
     Datenbank gespeichert werden?
                                                                        aus „AndroMDA.org“

Taentzer                         Modellgetriebene Softwareentwicklung                  219
Konfiguration einer Webanwendung
 Konfigurationsdaten:
    \WEB-INF
 Konfigurationsdatei:
  web.xml
    folgt einem festen Schema
    : Beschreibung der
     beteiligten Servlets
    : Einem
     deklarierten Servlet wird ein
     URL-Pattern zugeordnet. (Zur
     Suche eines passenden
     Servlets.)
     können bei der
     Request-Verarbeitung vor
     Servlets geschaltet werden.

 Taentzer                     Modellgetriebene Softwareentwicklung   220
Model-View-Controller-Architektur

                                       aus „publib.boulder.ibm.com“
Taentzer       Modellgetriebene Softwareentwicklung             221
Einfache Servlets
 Ein Servlet ist eine Java-Klasse, die zur Steuerung einer
  Webanwendung mit Hilfe des Request-Response-Models
  eingesetzt wird.
 Das Servlet WorkshopIndexServlet erweitert die Klasse
  HttpServlet.
 Für einfache Anfragen wird die Methode doGet() überschrieben.
 Die Methode doPost() wird überschrieben, wenn auch andere
  Aktionen (Daten ändern, E-Mail versenden, etc.) durchgeführt
  werden.
 Das Objekt vom Typ HttpServletRequest erlaubt den Zugriff auf
  die Informationen zur Anfrage (URL, Cookies usw.).
 Das Objekt vom Typ HttpServletResponse dient zum Erstellen
  der Antwort.
 Dokumentation: http://docs.oracle.com/javaee/1.4/tutorial/doc

Taentzer               Modellgetriebene Softwareentwicklung   222
Beispiel:PaperIndexServlet.java

Taentzer        Modellgetriebene Softwareentwicklung   223
Java Server Pages (JSP)
JSP: eine Art Template-Sprache
JSP-Seite:
 ein Textdokument mit zwei Arten von Text (ein Template):
      statische Daten, die in HTML formuliert sind, und
      JSP Elemente, die dynamischen Inhalt darstellen.
      Die Seite kann aus einer obersten Datei, die weitere Dateien
       enthält, bestehen. Diese sind entweder komplette JSP- Seiten oder
       JSP-Fragmente.
 dynamischer Inhalt:
      Java-Code oder spezielle JSP-Aktionen, sogenannten Scriptlets (in
       Java geschrieben)
      Expliziter durch die Verwendung von Tag-Libraries
 JSP-Dokumentation:
      http://java.sun.com/products/jsp/docs.html
Taentzer                    Modellgetriebene Softwareentwicklung     224
Scriptlet
 Enthält ein Code-Fragement, womit dynamische Inhalte
  produziert werden können.
 JSP-Syntax:
       oder
       code fragement 
      Ein Scriptlet kann beliebig viele Statements, Variablen, Ausdrücke oder
       Methodendeklarationen enthalten.
 Einsatzmöglichkeiten: z.B.
      Variablendeklaration für spätere Nutzung
      Verwendung von impliziten Objekten (wie session, request,
       response, etc.)
      Ausdrücke:  zu String konvertiert (ohne „;“)

Taentzer                       Modellgetriebene Softwareentwicklung              225
JSP-Direktiven: Eine Auswahl
 Page: Attribute für die gesamte JSP-Seite
      Syntax: 
      Beispiel: 
 Taglib: Angabe einer Tag-Bibliothek mit Präfix für verwendete
  Tags
      Syntax: 
      Beispiel: 
 Include: zum Einfügen anderer JSP-Seiten
      Syntax: 
      Beispiel: …The current date and time are
                      …
                 date.jsp: 
                           
Taentzer                       Modellgetriebene Softwareentwicklung                 226
JSP: Verwendung der Core-Tags
 Statt:

Taentzer                   Modellgetriebene Softwareentwicklung       227
Beispiel: JSP zur Anzeige von
        Datenbankeinträgen
       WorkshopIndex.jsp:

Taentzer                    Modellgetriebene Softwareentwicklung   228
Definition von Formularen in HTML
   Formular:                     Eingabeelement: 
        action: URI zur                     name: Name des Elements
         Verarbeitung der                    type: Typ des Elements
         Formulardaten                       value: Wert des Elements
        method: get| post              Label: 
        name: Formularname                  for: Eingabeelement

                                                                     Verstecktes
                                                                      Element

                                                                     Standard-
                                                                      Button

 Taentzer                     Modellgetriebene Softwareentwicklung               229
Definition von Formularen in HTML (2)

                                                    Text-Element

Taentzer     Modellgetriebene Softwareentwicklung         230
Servlets und JSP: Best Practices
 Nicht zu viel Java in HTML-Seiten, besser separate Java-
  Klassen
 Include-Mechanismus benutzen: statische Teile wie Header
  separat halten
 Kein Mix von Anwendungs- und Präsentationscode:
      Wiederverwendbare Komponenten
      Leichte Änderbarkeit der Präsentation
 Verwendung von Custom-Tags:
      Weniger Java Code, mehr HTML-artige Syntax
      Scriptlets sind nicht wiederverwendbar.

Taentzer                      Modellgetriebene Softwareentwicklung   231
Zusammenfassung
 Erstellung von dynamischen Webseiten nach Model-
  View-Controller-Prinzip
      Model: Entitäten und DAOs
      Controller: Servlets
      View: Java Server Pages
 Kein Mix von Anwendungs- und Präsentationscode
      Klare Trennung von Controller und Views
      Wiederverwendbare Komponenten
      Leichte Änderbarkeit der Präsentation
 O/R-Mapping durch Hibernate Annotations
      Implizite Modelle
Taentzer                   Modellgetriebene Softwareentwicklung   232
Sie können auch lesen