1 / 34

Turbine Konzepte und Dienste

Turbine Konzepte und Dienste. (insb. Velocity Integration) Julian Wank Gerald Rogl. Inhalt. Einführung MVC Torque Turbine Services Upload Service Users and Security Velocity oder JSP Sessions. Inhalt (2). Java Files und Templates Eine Seite mit Velocity bauen

Download Presentation

Turbine Konzepte und Dienste

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • 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

  7. 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

  8. 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

  9. 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)

  10. 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

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

  12. 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

  13. 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

  14. Zustandsinformation in URL kodieren • Session ID wird im URL kodiert, z.B. durch • Extra Pfad Info (die das Servlet versteht) http://server:80/servlet/MyServlet/123 • Zusätzlichen Parameter http://server:81/servlet/MyServlet?sessionid=123 • Eigene Notation http://server:82/servlet/MyServlet;$sessionid$123

  15. 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

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

  17. Java Files und Templates • Request  Turbine Servlet • Request Brokering • Build Context Object • Call Velocity Template Engine

  18. Java Files und Templates 2Eine Site mit Velocity bauen • Screen • Java Code in WEB-INF/classes compilieren • .vm – Template mit selben Namen erzeugenUnter templates/screens/… speichernHier BODY-Teil der Seite • TurbineResources.properties editierenWEB-INF/confmodule.packages=org.apache.turbine.modules, com.yourcompany.app.modules „classpath“ für Turbine

  19. Java Files und Templates 3Eine Site mit Velocity bauen • Ausführung • Request z.B. http://www.../HelloWorld.vm • HelloWorld class ausgeführt (Klasse muss von VelocityScreen erben) • Velocity Template Engine aufgerufen und HelloWorld.vm ausgeführt

  20. Java Files und Templates 4Eine 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

  21. 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

  22. Templates und Actions • Action – Parameter im URIz.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 schreibenz.B. data.setMessage("Username does not exist")

  23. 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

  24. 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 ClasspathWEB-INF/conf  TurbineResource.properties  MODULE PACKAGES  hier eigene Module hinzufügen

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. Wichtige Pfade (3) • Java files für Action Module • 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

  31. 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

  32. Docs • http://jakarta.apache.org/turbine/ • TDK • How-To‘s • http://jakarta.apache.org/turbine/turbine-2.3/apidocs/index.html

  33. Ende Vielen Dank für Eure Aufmerksamkeit!

More Related