Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Turbine Konzepte und Dienste
(insb. Velocity Integration) Julian Wank Gerald Rogl
2
Inhalt Einführung MVC Torque Turbine Services Upload Service
Users and Security Velocity oder JSP Sessions
3
Inhalt (2) Java Files und Templates Eine Seite mit Velocity bauen
Wie Templates gefunden werden Templates und Actions Ausführungsreihenfolge Loader User Login Velocity Context Automatisch erzeugte Objekte Eigene Objekte hinzufügen Wichtige Pfade Docs
4
Einführung Open Source Server-Side Java Framework
Kostenlos Quellcode ist frei verfügbar Server-Side Java Framework Erlaubt schnelles und sicheres bauen von Web Applicationen Teile auch einzeln verwendbar TDK beinhaltet Servlet Runner Tomcat 4.0 Object-Relational Mapping Layer (Torque) Presentation Layer (Velocity oder JSP)
5
Model-View-Controller (MVC)
Design Pattern (Entwurfsmuster) Architektur von Graphischen Benutzeroberflächen Webgestützten Anwendungen Trennung von Daten – Business Logic (Model) Präsentation – User Interface (View) Ablaufsteuerung (Controller) Bestandteile separat entwickeln
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) 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) VT: HTML Designer kann GUI ändern ohne den Java Code anzurühren
8
Torque Kreiert SQL Daten-Schema für DB
Kreiert Java Object Source Files Tabelle Klasse (nicht ändern!) (Business Objects müssen in XML modelliert sein) Alles weitere Team 3
9
Turbine Services Als Interface verwirklicht Erweiterbarkeit einfach
Ähnliches Service erweitern Neues Service schreiben (implements yourInterface extends TurbineBaseService) Über 25 eingebaute Services Upload Service Security Service Logging Service Cache Service Crypto Service
10
Upload Service 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
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
Users and Security Security Model ab Turbine 2 User Group Role
Permission ab Turbine 2 org.apache.turbine.services.security Package
13
Velocity oder JSP Designer hat die Wahl der Präsentations-Sprache
JSP (Java Server Pages) Etablierter Standard von Sun Microsystems Existierende Konfiguration anpassen Velocity Einfacher zu arbeiten Auf Turbine zugeschnitten Zusätzliche Power von JSP wird hier nicht vermisst
14
Sessions 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“ Zustandsinformation in URL kodieren Cookies Autorisation des Benutzers Versteckte Felder in Formularen Java Servlet Session Tracking API
15
Zustandsinformation in URL kodieren
Session ID wird im URL kodiert, z.B. durch Extra Pfad Info (die das Servlet versteht) Zusätzlichen Parameter Eigene Notation
16
Cookies Sie werden am Client gespeichert (falls der Benutzer das erlaubt) Beschränkungen 20 Cookies pro Site 300 Cookies insgesamt pro User Größe je Cookie maximal 4096 bytes
17
Session Attribute Damit können serverseitig Werte gespeichert werden
Sie sind nützlich um Dinge wie Login-Infos oder Warenkörbe zu implementieren
18
Java Files und Templates
Request Turbine Servlet Request Brokering Build Context Object Call Velocity Template Engine
19
Java Files und Templates 2 Eine Site mit Velocity bauen
Screen Java Code in WEB-INF/classes compilieren .vm – Template mit selben Namen erzeugen Unter templates/screens/… speichern Hier BODY-Teil der Seite TurbineResources.properties editieren WEB-INF/conf module.packages=org.apache.turbine.modules, com.yourcompany.app.modules „classpath“ für Turbine
20
Java Files und Templates 3 Eine Site mit Velocity bauen
Ausführung Request z.B. HelloWorld class ausgeführt (Klasse muss von VelocityScreen erben) Velocity Template Engine aufgerufen und HelloWorld.vm ausgeführt
21
Java Files und Templates 4 Eine Site mit Velocity bauen
Layout und Navigation Java Klassen erben von VelocitySiteLayout und VelocitySiteNavigation .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
Wie Templates gefunden werden
data.getParameters().getString("template") liefert Pfad zum Template Screen, Navigation und Layout werden gesucht, beginnend im selben Verzeichnis wie Template Selber Name Default Wenn die Template Variable nicht existiert, wird VelocityScreen und templates/screens/index.vm ausgeführt
23
Templates und Actions Action – Parameter im URI z.B. template/HelloWorld.vm/action/UpdateWorld UpdateWorld Java File ausgeführt Actions werden vor Screen ausgeführt 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")
24
Ausführungsreihenfolge
HTTP Client Request Ausführen des Turbine Servlets Ausführen Page Modul – Wenn Action ausführen Screen Objekt nach Layout fragen Layout ausführen - Layout führt Screen („Body“) aus Layout führt Navigation Modul aus Seite wird zurückgeliefert
25
Ausführungsreihenfolge - Loader
Loader – wozu? Dynamisches Laden der fünf Module Trennung von Code und Framework - Vorteile Update des Frameworks 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
26
Ausführungsreihenfolge – User Login
Konfiguration: TurbineResources.properties Framework Settings Nachdem Session eingerichtet ist, werden Daten im RunData Objekt gespeichert ($data) Turbine Servlet führt LoginUser Action aus Turbine Servlet führt DefaultPage aus
27
Velocity Context – automatisch erzeugte Objekte
RunData Objekt Keyword: data bzw. $data Interface zur Laufzeitinformation Ein Objekt pro Request TemplateLink Objekt Keyword $link Konvertierung von Links in Referenzen TemplatePageAttributes Objekt Keyword $page Änderung von HTML Attributen
28
Velocity Context – eigene Objekte hinzufügen
import org.apache.velocity.context.Context; import org.apache.turbine.util.RunData; doBuildTemplate(RunData data, Context context) context.put("hello",new String("testing")); Im Template: $hello the hello reference Output: testing the hello reference
29
Wichtige Pfade Default Layout
webapps/APPNAME/templates/app/layouts/Default.vm Definiert wie das default layout angezeigt wird Files die in das layout template eingefügt werden webapps/APPNAME/templates/app/navigations
30
Wichtige Pfade (2) Files in diesem Verzeichnis sind die die "$screen_placeholder ersetzen webapps/APPNAME/templates/app/screens Makros für HTML Fragmente #webapps/APPNAME/templates/app/GlobalMacros.vm Java file die sich auf Index.vm beziehen webapps/APPNAME/WEB-INF/src/java/PACKAGE/modules/screens
31
Wichtige Pfade (3) Java files für Action Module Datenbank-Schema
webapps/APPNAME/WEB-INF/src/java/PACKAGE/modules/actions Datenbank-Schema webapps/APPNAME/WEB-INF/conf Build file (z.B. nach Änderung des DB Schemas ausführen) webapps/APPNAME/WEB-INF/build "ant compile" kompiliert Java files neu
32
Wichtige Pfade (4) Java files die benutzt werden, um auf die Datenbank zuzugreifen webapps/APPNAME/WEB-INF/src/java/PACKAGE/om TurbineResource.property file webapps/APPNAME/WEB-INF/conf
33
Docs http://jakarta.apache.org/turbine/
TDK How-To‘s
34
Ende Vielen Dank für Eure Aufmerksamkeit!
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.