Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Turbine Konzepte und Dienste (insb. Velocity Integration) Julian Wank Gerald Rogl.

Ähnliche Präsentationen


Präsentation zum Thema: "Turbine Konzepte und Dienste (insb. Velocity Integration) Julian Wank Gerald Rogl."—  Präsentation transkript:

1 Turbine Konzepte und Dienste (insb. Velocity Integration) Julian Wank Gerald Rogl

2 2 Inhalt Einführung Einführung MVC MVC Torque Torque Turbine Services Turbine Services Upload Service Upload Service Users and Security Users and Security Velocity oder JSP Velocity oder JSP Sessions Sessions

3 3 Inhalt (2) Java Files und Templates Java Files und Templates Eine Seite mit Velocity bauen Eine Seite mit Velocity bauen Wie Templates gefunden werden Wie Templates gefunden werden Templates und Actions Templates und Actions Ausführungsreihenfolge Ausführungsreihenfolge –Loader –User Login Velocity Context Velocity Context –Automatisch erzeugte Objekte –Eigene Objekte hinzufügen Wichtige Pfade Wichtige Pfade Docs Docs

4 4 Einführung Open Source Open Source –Kostenlos –Quellcode ist frei verfügbar Server-Side Java Framework Server-Side Java Framework –Erlaubt schnelles und sicheres bauen von Web Applicationen Teile auch einzeln verwendbar Teile auch einzeln verwendbar –TDK beinhaltet Servlet Runner Tomcat 4.0 –Object-Relational Mapping Layer (Torque) –Presentation Layer (Velocity oder JSP)

5 5 Model-View-Controller (MVC) Design Pattern (Entwurfsmuster) Design Pattern (Entwurfsmuster) –Architektur von Graphischen Benutzeroberflächen Graphischen Benutzeroberflächen Webgestützten Anwendungen Webgestützten Anwendungen –Trennung von Daten – Business Logic (Model) Daten – Business Logic (Model) Präsentation – User Interface (View) Präsentation – User Interface (View) Ablaufsteuerung (Controller) Ablaufsteuerung (Controller) Bestandteile separat entwickeln Bestandteile separat entwickeln

6 6 –Für die View empfiehlt Sun den Einsatz von Java Server Pages (JSPs) Daten werden aus Model geholt (an Stelle von speziellen Tags), und in die HTML-Seite eingefügt (Pull-MVC) Daten werden aus Model geholt (an Stelle von speziellen Tags), und in die HTML-Seite eingefügt (Pull-MVC) Push-Strategie: Model kümmert sich um die Aktualität der View Push-Strategie: Model kümmert sich um die Aktualität der View –Controller Wird meist durch Servlet repräsentiert (reagiert auf Nutzerinteraktion mit der View und ruft entsprechende Methoden des Models auf) Wird meist durch Servlet repräsentiert (reagiert auf Nutzerinteraktion mit der View und ruft entsprechende Methoden des Models auf) –VT: HTML Designer kann GUI ändern ohne den Java Code anzurühren

7 7

8 8 Torque Kreiert SQL Daten-Schema für DB Kreiert SQL Daten-Schema für DB Kreiert Java Object Source Files Kreiert Java Object Source Files Tabelle Klasse (nicht ändern!) Tabelle Klasse (nicht ändern!) (Business Objects müssen in XML modelliert sein) (Business Objects müssen in XML modelliert sein) Alles weitere Team 3 Alles weitere Team 3

9 9 Turbine Services Als Interface verwirklicht Als Interface verwirklicht Erweiterbarkeit einfach Erweiterbarkeit einfach –Ähnliches Service erweitern –Neues Service schreiben (implements yourInterface extends TurbineBaseService) Über 25 eingebaute Services Über 25 eingebaute Services –Upload Service –Security Service –Logging Service –Cache Service –Crypto Service

10 10 Upload Service Einstellen (im TurbineResources.properties) Einstellen (im TurbineResources.properties) –Ob files automatisch durch den ParameterParser angenommen werden –Wo files vorläufig gespeichert werden sollen –Die max. Größe einer Anfrage die noch bearbeitet werden soll –Die max. Größe die ge-cashed wird (durch die TurbineUploadService class)

11 11 –Pfad im System setzen, wo sich das repository befindet –Ein HTML File kreieren, dass als User-Interface dient –Wenn FileItem kreiert wurde können die public- methoden darauf zugreifen und mit ihm arbeiten –Um temporär gespeicherte Daten muss man sich nicht kümmern, da das Service einen eigenen Garbage Collector hat

12 12 Users and Security Security Model Security Model –User –Group –Role –Permission ab Turbine 2 ab Turbine 2 –org.apache.turbine.services.security Package

13 13 Velocity oder JSP Designer hat die Wahl der Präsentations- Sprache Designer hat die Wahl der Präsentations- Sprache –JSP (Java Server Pages) Etablierter Standard von Sun Microsystems Etablierter Standard von Sun Microsystems Existierende Konfiguration anpassen Existierende Konfiguration anpassen –Velocity Einfacher zu arbeiten Einfacher zu arbeiten Auf Turbine zugeschnitten Auf Turbine zugeschnitten Zusätzliche Power von JSP wird hier nicht vermisst Zusätzliche Power von JSP wird hier nicht vermisst

14 14 Sessions Problem: Zustandslosigkeit von HTTP Problem: Zustandslosigkeit von HTTP –Es gibt keine Sessions jede Anfrage wird individuell und unabhängig von anderen betrachtet –Auch für Nicht-DBMS-Anwendungen ein Problem (Präsentieren der Ergebnisse einer Suche in Teilen) Verschiedene Varianten, Zustandsinfos in Abfragen einzubauen Verschiedene Varianten, Zustandsinfos in Abfragen einzubauen –Zustandsinformation in URL kodieren –Cookies –Autorisation des Benutzers –Versteckte Felder in Formularen –Java Servlet Session Tracking API

15 15 Zustandsinformation in URL kodieren Zustandsinformation in URL kodieren –Session ID wird im URL kodiert, z.B. durch Extra Pfad Info (die das Servlet versteht) Extra Pfad Info (die das Servlet versteht) Zusätzlichen Parameter Zusätzlichen Parameter Eigene Notation Eigene Notation

16 16 Cookies Cookies –Sie werden am Client gespeichert (falls der Benutzer das erlaubt) –Beschränkungen 20 Cookies pro Site 20 Cookies pro Site 300 Cookies insgesamt pro User 300 Cookies insgesamt pro User Größe je Cookie maximal 4096 bytes Größe je Cookie maximal 4096 bytes

17 17 Session Attribute Damit können serverseitig Werte gespeichert werden Damit können serverseitig Werte gespeichert werden Sie sind nützlich um Dinge wie Login-Infos oder Warenkörbe zu implementieren Sie sind nützlich um Dinge wie Login-Infos oder Warenkörbe zu implementieren

18 18 Java Files und Templates Request Turbine Servlet Request Turbine Servlet Request Brokering Request Brokering Build Context Object Build Context Object Call Velocity Template Engine Call Velocity Template Engine

19 19 Java Files und Templates 2 Eine Site mit Velocity bauen 1. Screen 1.Java Code in WEB-INF/classes compilieren 2..vm – Template mit selben Namen erzeugen Unter templates/screens/… speichern Hier BODY-Teil der Seite 3.TurbineResources.properties editieren WEB-INF/conf module.packages=org.apache.turbine.modul es, com.yourcompany.app.modules classpath für Turbine

20 20 Java Files und Templates 3 Eine Site mit Velocity bauen Ausführung Ausführung 1. Request z.B. 2. HelloWorld class ausgeführt (Klasse muss von VelocityScreen erben) 3. Velocity Template Engine aufgerufen und HelloWorld.vm ausgeführt

21 21 Java Files und Templates 4 Eine Site mit Velocity bauen 2. Layout und Navigation 1.Java Klassen erben von VelocitySiteLayout und VelocitySiteNavigation 2..vm Files werden im templates/layout bzw. /navigation Verzeichnis gespeichert Wichtig: Default.vm enthält das Gesamtlayout indem Menüs, Navigation etc. als Variable in eine Struktur eingefügt werden /templates/…/layouts/Default.vm

22 22 Wie Templates gefunden werden data.getParameters().getString("template") liefert Pfad zum Template data.getParameters().getString("template") liefert Pfad zum Template 1. Screen, Navigation und Layout werden gesucht, beginnend im selben Verzeichnis wie Template 1. Selber Name 2. Default Wenn die Template Variable nicht existiert, wird VelocityScreen und templates/screens/index.vm ausgeführt

23 23 Templates und Actions Action – Parameter im URI z.B. template/HelloWorld.vm/action/UpdateWorld UpdateWorld Java File ausgeführt Action – Parameter im URI z.B. template/HelloWorld.vm/action/UpdateWorld UpdateWorld Java File ausgeführt Actions werden vor Screen ausgeführt Actions werden vor Screen ausgeführt Erst danach Screen Class und.vm Template Erst danach Screen Class und.vm Template Actions liefern nichts zurück, können aber in den Message String des RunData Objekts schreiben z.B. data.setMessage("Username does not exist") Actions liefern nichts zurück, können aber in den Message String des RunData Objekts schreiben z.B. data.setMessage("Username does not exist")

24 24 Ausführungsreihenfolge 1. HTTP Client Request 2. Ausführen des Turbine Servlets 3. Ausführen Page Modul – Wenn Action ausführen 4. Screen Objekt nach Layout fragen 5. Layout ausführen - Layout führt Screen (Body) aus 6. Layout führt Navigation Modul aus 7. Seite wird zurückgeliefert

25 25 Ausführungsreihenfolge - Loader Loader – wozu? Loader – wozu? –Dynamisches Laden der fünf Module –Trennung von Code und Framework - Vorteile Update des Frameworks Update des Frameworks Distribution des Codes alleine Distribution des Codes alleine –Web-App. Module bleiben in deren Package Pfad Loader Classpath WEB-INF/conf TurbineResource.properties MODULE PACKAGES hier eigene Module hinzufügen Loader Classpath WEB-INF/conf TurbineResource.properties MODULE PACKAGES hier eigene Module hinzufügen

26 26 Ausführungsreihenfolge – User Login Konfiguration: TurbineResources.properties Framework Settings Konfiguration: TurbineResources.properties Framework Settings Nachdem Session eingerichtet ist, werden Daten im RunData Objekt gespeichert ($data) Nachdem Session eingerichtet ist, werden Daten im RunData Objekt gespeichert ($data) Turbine Servlet führt LoginUser Action aus Turbine Servlet führt LoginUser Action aus Turbine Servlet führt DefaultPage aus Turbine Servlet führt DefaultPage aus

27 27 Velocity Context – automatisch erzeugte Objekte RunData Objekt RunData Objekt –Keyword: data bzw. $data –Interface zur Laufzeitinformation –Ein Objekt pro Request TemplateLink Objekt TemplateLink Objekt –Keyword $link –Konvertierung von Links in Referenzen TemplatePageAttributes Objekt TemplatePageAttributes Objekt –Keyword $page –Änderung von HTML Attributen

28 28 Velocity Context – eigene Objekte hinzufügen import org.apache.velocity.context.Context; import org.apache.velocity.context.Context; import org.apache.turbine.util.RunData; import org.apache.turbine.util.RunData; doBuildTemplate(RunData data, Context context) doBuildTemplate(RunData data, Context context) context.put("hello",new String("testing")); context.put("hello",new String("testing")); Im Template: $hello the hello reference Im Template: $hello the hello reference Output: testing the hello reference Output: testing the hello reference

29 29 Wichtige Pfade Default Layout Default Layout –webapps/APPNAME/templates/app/layouts/Def ault.vm –Definiert wie das default layout angezeigt wird Files die in das layout template eingefügt werden Files die in das layout template eingefügt werden –webapps/APPNAME/templates/app/navigations

30 30 Wichtige Pfade (2) Files in diesem Verzeichnis sind die die "$screen_placeholder ersetzen Files in diesem Verzeichnis sind die die "$screen_placeholder ersetzen –webapps/APPNAME/templates/app/screens Makros für HTML Fragmente Makros für HTML Fragmente –#webapps/APPNAME/templates/app/GlobalMacros.vm Java file die sich auf Index.vm beziehen Java file die sich auf Index.vm beziehen –webapps/APPNAME/WEB- INF/src/java/PACKAGE/modules/screens

31 31 Wichtige Pfade (3) Java files für Action Module Java files für Action Module –webapps/APPNAME/WEB- INF/src/java/PACKAGE/modules/actions Datenbank-Schema Datenbank-Schema –webapps/APPNAME/WEB-INF/conf Build file (z.B. nach Änderung des DB Schemas ausführen) Build file (z.B. nach Änderung des DB Schemas ausführen) –webapps/APPNAME/WEB-INF/build –"ant compile" kompiliert Java files neu

32 32 Wichtige Pfade (4) Java files die benutzt werden, um auf die Datenbank zuzugreifen Java files die benutzt werden, um auf die Datenbank zuzugreifen –webapps/APPNAME/WEB- INF/src/java/PACKAGE/om TurbineResource.property file TurbineResource.property file –webapps/APPNAME/WEB-INF/conf

33 33 Docs –TDK –How-Tos 2.3/apidocs/index.html 2.3/apidocs/index.html 2.3/apidocs/index.html 2.3/apidocs/index.html

34 34 Ende Vielen Dank für Eure Aufmerksamkeit!


Herunterladen ppt "Turbine Konzepte und Dienste (insb. Velocity Integration) Julian Wank Gerald Rogl."

Ähnliche Präsentationen


Google-Anzeigen