- Velocity Template Engine

Slides:



Advertisements
Ähnliche Präsentationen
interaktiver Web Service Workflows
Advertisements

Modellgetriebene Softwareentwicklung
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
eXist Open Source Native XML Database
Ruby on Rails im Überblick
Java 2 Enterprise Edition (J2EE)
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Speicherung von XML- Dokumenten als Large Objects.
Einführung XML XML Einführung Andreas Leicht.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Struts Seminar Javabasierte Webanwendungen. Tobias Kutzler2 Überblick Historie Was ist Struts? Model Controller View Zusammenfassung.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Datensammlung
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Wir bauen uns eine Webapplikation!
Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im.
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Java und Eclipse.
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
Dynamische Webseiten mit PHP [und Python]
Sesame Florian Mayrhuber
Turbine Konzepte und Dienste
Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link.
Turbine Konzepte und Dienste
JavaServer Faces Urs Frei. Inhalt JSF Funktionsweise Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung)
CMS-Kolloquium am 10. Januar 2006
EPROG Tutorium #4 Philipp Effenberger
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Torque robert.resch-wolfgang.schneider. uebersicht Was ist Torque Komponenten von Torque Generator Erzeugte Klassen Methoden Torque in Turbine Demobeispiel.
SQLite und XML in PHP 5.
Einführung in PHP.
Einführung in PHP 5.
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Velocity Workshop SE Projekt 1 Velocity Workshop Templatesprache im Turbine-Kontext.
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
TypoScript.
(Syntax, Strings/Zahlen, Variablen, Arrays)
Dynamische Seiten 13. Juli 2009 Norbert Winnige „Datenbanken in den Geisteswissenschaften“
Java Server Pages 2 und Benutzerdefinierte Tags Strahil Yordanov.
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
Marcel Genzmehr 1 Javabasierte Webtechnologien Web Application Framework Turbine.
© Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz.
Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
Implementieren von Klassen
 Präsentation transkript:

- Velocity Template Engine                                                                                                                               - Velocity Template Engine Doppelhammer Eva, 0159008 Oberndorfer Norbert, 0155621

Inhalt Was ist Velocity? Anwendungsbereich Vorteile / Nachteile Bsp: Standalone & Eingebettet (in Turbine) Velocity in Turbine Funktionsweise Syntax Beispiel

Was ist Velocity? ...ist eine auf Java basierende Template Engine ...definiert eine einfache Sprache zur Textgenerierung …generiert beliebige Text-Dokumente (HTML, XML, usw.) ...ermöglicht den Zugriff auf Java-Objekte

Anwendungsbereich Standalone Eingebettet (meist in Web-Frameworks) Code-Generierung (z.b Java-Files, C#, C++, …) Xml-Generierung Beliebige Textformate Eingebettet (meist in Web-Frameworks) Web-UI-Generierung (z.b. html, xml) Z.b. in Turbine

Vorteile / Nachteile + durch MVC: Trennung von Javacode und Internetseite (iG zu JSP / PHP)> + erhöhte Lesbarkeit + einfache Syntax, leicht erlernbar + stand-alone oder eingebettet (zB: Turbine) verwendbar + vielseitig einsetzbar (nicht nur UI-Generierung) Open-Source: Weiterentwicklung? Dokumentation? Nur für Java Anwendungen???

Beispiel: Standalone FileWriter fw = new FileWriter(“persons.csv”); List persons = dbconnection.select(“* from Person”); Velocity.init(); VelocityContext context = new VelocityContext(); context.put(“persons", persons); Template template = Velocity.getTemplate(“personCSV.vm"); template.merge(context, fw); personCSV.vm Persons.csv #foreach($p in $persons) $p.FirstName ;$p.LastName #end Sepp ;Forcher Hans ;Huber Franz ;Maier Max ;Mustermann Helga ;Hofer Sonja ;Bauer

Eingebettet in Turbine Die Initialisierung, Merge des Templates, Erzeugung des Context passiert automatisch durch das Turbine Framework (iG bei Standalone Einsatz (siehe Bsp.). Mit Hilfe der Velocity-Templates wird Html erzeugt. Eigene Screen/Action/Navigation-Klassen leiten von Turbine Klassen ab. (Meistens) muss die Methode doBuildTemplate(data, context) überschrieben werden. Darin erweitert man den Kontext um diejenigen Daten, die im Screen/ in der Navigation dargestellt werden sollen. Das zugehörige Template wird nach Methodenaufruf automatisch gefunden und ausgeführt. newapp.modules.screens.Index templates/screens/Index.vm doBuildTemplate(Rundata d, Context ctx) { List rdfList = RdfPeer.doSelect(…); ctx.put(“entries“, rdfList) } #foreach ($entry in $entries) <tr> #entryCell ($entry.Title) #entryCell ($entry.Dept) </tr> #end

Velocity in Turbine Model View Controller Torque OM Klassen> Modell Turbine Screens und Actions> Controller Velocity Templates> View Context ist Schnittstelle zwischen Controller und View Action/Screen/Navigation füllt Context Velocity Templates greifen auf den Context zu

MVC schematisch Context

Funktionsweise Konzept des „Context“ ist zentral in Velocity ...fungiert als Daten-Container zwischen Systemteile Systemteile sind Java-Layer (Programmierer) und Template-Layer (Designer) Programmierer sammelt Objekte und stellt sie in den Context; zB.: context.put(„persons“, getListOfPersons(); Designer kann nun auf diese Objekte (inkl deren Methoden und Attribute) über die Templates zugreifen Zusammenarbeit zwischen Designer und Programmierer (Schnittstellendefinition)!!!!!

Syntax Variablen deklarieren Kommentare Methoden / Eigenschaften Bedingungen / Schleifen Makros Velocity benützen

Variablen Wertzuweisung durch #set-Befehl im Template #set ($hallo = “Griasti“) vom Java-Code Context Wenn Javavariable $hallo Wert “hi“ zum Zeitpunkt der Anfrage auf das Template => Output immer “hi“

Variablennamen Richtig $hallo $Hallo1 $baum-haus $baum_haus $c_-504 Falsch $Österreich $*Bereich $50jahre $_erledigt => muss mit Buchstaben anfangen

Kommentare kurzer Kommentar ## einzeiliger Kommentar Kommentarblock #*Kommentar über mehrere Zeilen *#

Eigenschaften / Methoden Methode aufrufen $lva.raum(), $mitarbeiter.getName(), $lva.setbesuchen([“PR Software“, “SE IE“, “PROST IE“]) Eigenschaft aufrufen / Kurzform Aufruf einer Methode $lva.leiter Spezielle Fälle Ich bin ${zahl}zehn. <input type = “text“ name = “Vorname“ value = “$!vorname“/> \$name

Aufruf im Template Methode $lva.getLeiter() aufrufen vom Template aus mit $lva.Leiter. Velocity sucht nach: 1: $lva.getleiter 2: $lva.getLeiter

Bedingungen / Schleifen IF-Bedingung #if(Bedingung1) Aktion1 #elseif(Bedingung2) Aktion 2 #else Aktion 3 #end Logische Operatoren NOT> !, AND> && OR> || For Each – Schleife #foreach (Bedingung) Aktion #end Schleifenzähler: $velocityCount

Einfügen von Dateien Datei nicht bearbeitet direkt eingefügt #include (“statisch.html“) Datei nicht bearbeitet direkt eingefügt liegen in TEMPLATE_ROOT möglich Datei über Variable einfügen #parse (“personTable.vm“) Datei wird bearbeitet enthält VTL (velocity template language) nur 1 Datei übergeben Templates in TEMPLATE_ROOT kann wiederum #parse- Befehle enthalten – 10 Ebenen #stop Unterbrechen der Ausführung Template auf andere Folie

Makros: Velocimacros Auslagerung von Scriptelementen Zeitersparnis einmalig definiert Wiederholungen erspart Sktruktur #makro (testmakro) #end Aufruf im Template #testmakro ()

Makros: Velocimacros Erkennung Referenzen, Zeichenketten, Ziffern, IntegerRange, Objektarrys, Boolean Übergibt man einem Makro als Parameter eine Methode, so wird diese bei jedem Zugriff ausgeführt #table5($counter.increase()) #macro table5($value)

Eclipse: Velocity Plugin unter: http://veloedit.sourceforge.net Editor für .vm Dateien Syntax Highlighting Source Insight (auch bei eigenen Makros) Strukturansicht Einstellungen Windows – Preferences – VelocityUI

Beispiel: Newapp Velocity User Guide http://jakarta. apache

Velocity Einstellungen in Turbine TurbineResources.properties #------------------------------------------------------------------ # # M O D U L E P A C K A G E S # This is the "classpath" for Turbine. In order to locate your own # modules, you should add them to this path. For example, if you have # com.company.actions, com.company.screens, com.company.navigations, # then this setting would be "com.company,org.apache.turbine.modules". # Default: org.apache.turbine.modules module.packages=org.mycompany.newapp.modules,org.apache.turbine.flux.modules # V E L O C I T Y S E R V I C E services.VelocityService.file.resource.loader.path = /templates/app,/templates/flux services.VelocityService.velocimacro.library = GlobalMacros.vm