EINFACHE WEBANWENDUNGEN BASIEREND AUF JAVA, HTML, JSP, HIBERNATE ANNOTATIONS UND MYSQL - NOVEMBER 2012
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Einfache Webanwendungen basierend auf Java, HTML, JSP, Hibernate Annotations und MySQL 21. November 2012 Taentzer Modellgetriebene Softwareentwicklung 200
Ü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
Webanwendungen Client-seitig Server-seitig http-Anfrage Web- anwendung http-Antwort Anwendung- Server persistente Daten Taentzer Modellgetriebene Softwareentwicklung 202
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