Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im.

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Advertisements

Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Pflege der Internetdienste
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Internet-Datenbanken
Objektorientierte Programmierung
Datenbankzugriff im WWW (Kommerzielle Systeme)
Java 2 Enterprise Edition (J2EE)
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Konstruktoren.
SQL als Abfragesprache
Dynamische Webseiten mit PHP
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Tomcat (I) Ende 1999 Jakarta-Projekt von Apache, IBM und Sun gegründet
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
Einführung in die Programmierung Datensammlung
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Marcus Haller & René Schulze
JDBC: JAVA Database Connectivity
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Einführung Servlets/JSPs
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
20:00.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Wir bauen uns eine Webapplikation!
Einführung in die Programmiersprache Java
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.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link.
- Velocity Template Engine
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
Symmetrische Blockchiffren DES – der Data Encryption Standard
Einführung in PHP.
Einführung in PHP 5.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Datenbankanbindung mit
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
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.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Datenbanken im Web 1.
TypoScript.
 Präsentation transkript:

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 1 WPF Datenbanken im Internet Template Engine Dieser Vortrag basiert auf folgenden Versionen… Apache Tomcat Eclipse SDK Version Java 2 SDK Version Velocity Version Der Vortrag wurde erarbeitet von... Linke, Stefan ( ) Riedel, Morris ( )

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 2 Zum Aufbau des Vortrags Vorgehen mit Fokus auf DEMONSTRATIONS Erklärungen (bilden Theorie), sind halt immer notwendig Beispiele (bilden Praxis), zu den jeweiligen Abschnitten zum Warm werden mit steigendem Anspruch Übungen (dienen der Festigung), um das Aufgabenblatt nachher schneller zu bearbeiten und besser zu verstehen Ziel: etwas von hier mitnehmen

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 3 Zum Inhalt des Vortrags 1.Velocity allgemein (Eigenschaften, Vorteile, Unterschied zu JSP) 2.Wichtige Schritte bei dem Einsatz von Velocity (Initialisierung) 3.Das Context – Objekt (VelocityContext) 4.VTL – Velocity Template Language (Referenzen, Anweisungen) 5.Makros 6.Velocity und Servlets (handleRequest, loadConfiguration) 7.Velocity, Servlets und Datenbankanbindung 8.Velocity Tools 9.Installation – Velocity 10.[Exkurs] Installation – Eclipse und Velocity Plugin 11.Weiterführende Themen und Quellen

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 4 Was ist Velocity? ein Projekt der Apache jakarta-Projektgruppe (open source) eine auf java basierende Template – Engine (Template, deutsch: Vorlage, Schablone) Zusammenarbeit der Template-Engine mit eigenem Java-Code gute Alternative zu PHP oder JSP besitzt mächtige, aber leicht erlernbare Script-Sprachen Elemente Klare und einfache Syntax für Designer Einfaches Programmiermodell für Entwickler Einfache Integration der Engine in Java-Anwendungen

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 5 JSP (Java Server Pages) als Wiederholung (1) Ein JSP-Server erstellt aus der JSP-Seite ein Servlet und führt dieses aus JSP´s bestehen aus HTML-Elementen mit eingebetteten JSP Anweisungen in Form von Java Code Somit keine Trennung zwischen Darstellung und Geschäftslogik Paralleles Arbeiten von Programmierern und Designern nur sehr schwer möglich (beide Rollen an nur einem Source) Einbettung erfolgt über spezielle Tags, ähnlich wie HTML- Elemente ( ) Aufteilung zwischen Programmierung und Design nur mit schwierigem Konzept der Tag-Bibliotheken Somit sind gute Java Kenntnisse für beide Rollen erforderlich

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 6 JSP (Java Server Pages) als Wiederholung (2) Schleife.jsp ohne Kenntnisse von Java nicht zu verstehen! Schleifenausgabe... Ihre Werte: <% synchronized(this) { for(; i<100; i++) { for(int j=0; j<100; j++) System.out.print("."); out.println(i); } i=0; } %>

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 7 Vorteile von Velocity Strikte Trennung zwischen Darstellung und Geschäftslogik Webseiten können so durch das MVC-Konzept erstellt werden (MVC, Model View Controller Entwurfsmuster) Designer arbeiten an einer gut aussehenden Webseite (Rolle der Darstellung) Java-Programmierer erstellen parallel dazu die java-Klassen (Rolle der Geschäftslogik) Wichtig: Separierung des Java-Codes von der Webseite daher wird der Überblick über die Webseite bewahrt, der bspw. bei JSP verloren ging Wartung und Entwicklung können unabhängig voneinander durchgeführt werden

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 8 Velocity Einsatzgebiete Servlet basierte Webprogrammierung durch Ableitung einer Basisklasse (eigentlich Haupteinsatzgebiet) Einsatz in normalen Applikationen zur Trennung von Text und Code Trennung von dynamischen Datenbankinhalten und ihrer Repräsentation Datenformatierung und Präsentationen unabhängig von Code bei fast allen Projekten in der Softwareentwicklung sinnvoll Velocity wird als bevorzugte Template-Engine auch oft mit dem Webapplikations-Framework Turbine kombiniert

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 9 Allgemeine Kenntnisse über Velocity – Übung Lösung: Apache jakarta, open source, java-basierend Trennung zwischen Darstellung und Geschäftslogik Paralleles Arbeiten von Designer und Entwickler Wartung und Entwicklung unabhängig In der Webseite im Prinzip kein Java-Code, besser als JSP Unterstützt das MVC – Entwurfsmuster leicht zu erlernen und leicht anzuwenden Einsatzgebiete: Datenformatierung und Servlets Wer kann nochmal die wichtigsten Punkte von Velocity erklären?

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 10 Wichtige Schritte bei dem Einsatz von Velocity – Erklärung(1) Bei einem Einsatz von Velocity werden (fast) immer die gleichen Schritte ausgeführt (Anwendung und bei Servlets z.T. implizit)… Velocity wird einmal initialisiert Velocity.init(); Erzeugung eines Context Objektes VelocityContext con = new VelocityContext(); Daten werden dem Context Objekt hinzugefügt con.put("Testmensch", "name"); Ein Template (evtl. von vielen) auswählen temp = Velocity.getTemplate("Kunden.vm"); Zusammenführung von Template und Daten (merge) StringWriter sw = new StringWriter(); temp.merge(con,sw);

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 11 Wichtige Schritte bei dem Einsatz von Velocity – Beispiel(1) public static void main( String[] args ) { try { Velocity.init(); } catch (Exception e) {} VelocityContext con = new VelocityContext(); con.put("name", "Testmensch"); Template temp = null; try { temp = Velocity.getTemplate("Kunden.vm"); StringWriter sw = new StringWriter(); temp.merge(con,sw); System.out.println(sw.toString()); } catch (ResourceNotFoundException rnfe ) { System.out.println("- Template wurde nicht gefunden"); } catch (ParseErrorException pee ) { System.out.println("- Template ist fehlerhaft"); } catch (MethodInvocationException mie){ System.out.println("- Template ruft fehlerhaftes auf"); } catch (Exception e) { System.out.println("- Sonstiger Fehler"); } // try } // void main -> siehe Bsp.-Projekt [Velocity]BspVeloInit

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 12 Wichtige Schritte bei dem Einsatz von Velocity – Beispiel(2) Inhalt des Templates (Kunden.vm) Guten Tag $name! Wir freuen uns, dass sie unser Produkt gewählt haben. Ausgabe des Beispiels: Guten Tag Testmensch! Wir freuen uns, dass sie unser Produkt gewählt haben.

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 13 Wichtige Schritte bei dem Einsatz von Velocity – Übung Lösung: Bei dem Einsatz von Velocity werden (fast) immer die gleichen Schritte ausgeführt (Anwendung und Servlets) Velocity wird einmal initialisiert Erzeugung eines Context Objektes Daten werden dem Context Objekt hinzugefügt Ein Template (evtl. von vielen) auswählen Zusammenführung von Template und Daten (merge) um Output zu generieren Wer kann die wichtigsten Schritte nochmal kurz wiederholen?

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 14 Das Context Objekt – Erklärung (1) Übernimmt den Transport zwischen Darstellung (Designer) und der Geschäftslogik (Entwickler) die in java eingefügten Objekte werden dem Designer als Template Elemente zur Verfügung gestellt Das gilt für Eigenschaften und Methoden der eingefügten Objekte Der Entwickler kann unterschiedliche Objekte in diesen Context bringen Wichtig ist nur die Absprache der jeweiligen Namen der Eigenschaften und Methoden mit dem Designer Der Context bildet also quasi die Transport – Schnittstelle zwischen Entwickler und Designer

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 15 Das Context Objekt – Erklärung (2) Das Context – Objekt erinnert stark an eine Hashtable Methode um Daten in das Context – Objekt zu bringen… public Object put(String key, Object value); Methode um Daten aus dem Context – Objekt zu erhalten… public Object get(String key); Primitive Datentypen müssen mit Wrapper-Methoden erstmal in ein Objekttyp umgewandelt werden Integer i = new Integer(5); put(Artikelanzahl,i); Zusammenführung von Template und Context durch… public void merge (Context con, StringWriter sw)

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 16 Das Context Objekt – Beispiel (1) public static void main( String[] args ) { try { Velocity.init(); } catch (Exception e) {} VelocityContext con = new VelocityContext(); con.put("name", "Testmensch"); System.out.println("- der Name " + con.get("name") + " wurde zugewiesen"); Vector artikel = new Vector(); artikel.addElement( "MS Windows XP Home Edition"); artikel.addElement( "MS Office 2003"); artikel.addElement( "Data Becker: Masterung Office 2003"); con.put("artikel",artikel); Template temp = null; try { temp = Velocity.getTemplate("Kunden.vm"); StringWriter sw = new StringWriter(); temp.merge(con,sw); System.out.println(sw.toString()); } catch (ResourceNotFoundException rnfe ) { System.out.println("- Template wurde nicht gefunden"); } catch (ParseErrorException pee ) { System.out.println("- Template ist fehlerhaft"); } catch (MethodInvocationException mie){ System.out.println("- Template ruft fehlerhaftes auf"); } catch (Exception e) { System.out.println("- Sonstiger Fehler"); } // try } // void main -> siehe Bsp.-Projekt [Velocity]BspVeloContext

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 17 Das Context Objekt – Beispiel (2) Inhalt des Templates (Kunden.vm) Guten Tag $name! Wir freuen uns, dass Sie unsere Produkte gekauft haben. Folgende Artikel haben Sie bei uns gekauft: $artikel Ausgabe des Beispiels: - der Name Testmensch wurde zugewiesen Guten Tag Testmensch! Wir freuen uns, dass Sie unsere Produkte gekauft haben. Folgende Artikel haben Sie bei uns gekauft: [MS Windows XP Home Edition, MS Office 2003, Data Becker: Masterung Office 2003]

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 18 Das Context Objekt - Übung Lösung: 1.) Methode put 2.) Methode get 3.) einer Hashtable aus der java API 4.) Methode merge 1.) Wie können Daten in den Kontext gebracht werden? 2.) Wie können Daten aus dem Kontext gelesen werden? 3.) Das context Objekt ähnelt welchem Java-Objekt besonders? 4.) Wie kommen Template und Context zusammen?

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 19 VTL – Velocity Template Language – Referenzen (1) Nach einem $ Zeichen folgt eine Referenz (Bsp.: $name) Drei Arten von Referenzen Variablen Eigenschaften Methoden Für eine gute Verwendung des Templates ist die Absprache von Designer und Entwickler wichtig, bzgl. der Namensgebung Grundsätzlich wird alles erstmal als String-Objekt behandelt

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 20 VTL – Velocity Template Language – Referenzen (2) Referenzart Variable $-Zeichen, gefolgt vom Variablennamen (VTL identifier) Zur Zeit der Anfrage auf das Template werden dann alle Vorkommen im Template durch den Wert im Context ersetzt Bsp.: $name $artikel Referenzart Eigenschaften $-Zeichen, gefolgt vom VTL Identifier (erste Ebene) danach Punkt und weiterer VTL Identifier (zweite Ebene) Zur Zeit der Anfrage auf das Template werden die Werte der Eigenschaften dann jeweils im Template eingesetzt Bsp.: $kunde.Name $artikel.Preis

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 21 VTL – Velocity Template Language – Referenzen (3) Referenzart Methoden $-Zeichen, gefolgt vom VTL identifier danach Punkt und dann der VTL Method Body VTL Method Body besteht aus VTL identifier gefolgt von optionalen Parametern in Klammern Bsp.: $kunde.getName(), $artikel.setName(Windows XP) VTL Eigenschaften können als Kürzel für VTL-Methoden verwendet werden Gilt nicht bei Methoden mit Parametern Bsp.: $kunde.Name äquivalent zu $kunde.getName()

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 22 VTL – Velocity Template Language – Referenzen – Beispiel (1) Auszug aus dem Sourcecode /* Context erzeugen */ VelocityContext con = new VelocityContext(); System.out.println("- neuer Kontext wurde angelegt"); /* Kunde anlegen */ Kunde kundenobjekt = new Kunde(); kundenobjekt.setName("Testmensch"); /* Context bearbeiten */ con.put("kunde", kundenobjekt); // hier der Unterschied, wieviel Arbeit die Ausgabe in Java machen würde, Stichwort casten! System.out.println("- der Kunde " + ((Kunde)con.get("kunde")).getName() + " wurde zugewiesen"); /* auch einen Vektor kann man reingeben */ Vector artikel = new Vector(); artikel.addElement( "MS Windows XP Home Edition"); artikel.addElement( "MS Office 2003"); artikel.addElement( "Data Becker: Masterung Office 2003"); /* gekaufte artikel werden übergeben */ con.put("artikel",artikel); -> siehe Bsp.-Projekt [Velocity]BspVeloReferenzen

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 23 VTL – Velocity Template Language – Referenzen – Beispiel (2) Einführung einer trivialen Klasse Kunde in Bean-Notation Inhalt des Templates (Kunden.vm) Guten Tag $kunde.Name! Der Kunde $kunde.getName() hat folgendes bei uns gekauft: $artikel Sie heißen nicht $kunde ! Ausgabe des Beispiels: Guten Tag Testmensch! Der Kunde Testmensch hat folgendes bei uns gekauft: [MS Windows XP Home Edition, MS Office 2003, Data Becker: Masterung Office 2003] Sie heißen nicht !

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 24 VTL – Velocity Template Language – Referenzen - Übung Lösung: 1.)Referenzen beginnen mit $ (und man erhält etwas) 2.) Es gibt keinen Unterschied, beim Aufruf von $kunde.Name sucht Velocity automatisch nach $kunde.getName() oder $kunde.getname() und ruft die Methode auf 3.) Variablen, Eigenschaften, Methoden 1.) Mit welchem Zeichen beginnt eine Referenz? 2.) Wodrin liegt der Unterschied beim Aufruf $kunde.name und $kunde.getName() ? 3.) Welche Arten von Referenzen gibt es?

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 25 VTL – Velocity Template Language – Anweisungen (1) Jede Anweisung hat die Form #Befehl (Bsp.: #set) Referenzen dienen den dynamische Inhalten von Texten und… Anweisungen können mit dem Output der Referenzen arbeiten dadurch kann noch detaillierter gearbeitet werden es gibt einen festgelegten Satz an Anweisungen Kommentare Logische Operatoren Bedingungen Schleifen Wertzuweisung Externe Dateien einbinden

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 26 VTL – Velocity Template Language – Anweisungen (2) Kommentare erscheint nicht im Output der Template Engine hilft der Übersicht im Template Bsp.: ## einzeiliger Kommentar #* Mehrzeiliger Kommentar *# Logische Operatoren Aus Java bekannt: &&(und), ||(oder) und !(nicht) dadurch lassen sich nahezu alle Vergleiche formulieren nützlich in Verbindung mit Bedingungen… Bsp.: $anzahl ==1 && $max == 2

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 27 VTL – Velocity Template Language – Anweisungen (3) Bedingungen Bekannte Bedingungen mit #if, #elseif und #else Abschluss eines Bedingungsblocks mit #end Vergleiche mit üblichen Zeichen ==, Bsp.: #if ( $anzahl > 30 ) Kunde ist Großkunde #else Kunde ist Normalkunde #end

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 28 VTL – Velocity Template Language – Anweisungen (4) Schleifen nur eine Schleifenvariante, die #foreach Schleife Abschluss eines Schleifenblocks mit #end so kann man bspw. die Datensätze einer Datenbankabfrage darstellen und korrekt formatieren Bsp.: Folgende Produkte wurden gekauft… #foreach ( $artikel in $gekaufteartikel ) $velocityCount. Artikel $artikel #end Die Variable $gekaufteartikel kann einen Vektor, eine Hashtable, ein Array, Iterator, Enumeration oder eine Collection enthalten $velocityCount enthält die Schleifeniterationszahl (1…n)

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 29 VTL – Velocity Template Language – Anweisungen (5) Wertzuweisung Mit #set kann man Referenzen Werte zuweisen, Bsp. #set ( $kunde.Name = Schmitz) Auch das Resultat von Eigenschaften oder Methoden kann bei set verwendet werden, Bsp #set ( $kunde.Name = $anmeldung.Name ) Auch eine Zuweisung von Arraytypen ist möglich, Bsp. #set( $kunde.gekaufteartikel = [Borland Delphi 8, MS Windows 2000, MS Office 2003]) Im Prinzip ähnelt #set einer einfachen Zuweisung in Java nur mit dem Mantel #set( … )

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 30 VTL – Velocity Template Language – Anweisungen (6) Externe Dateien einbinden Inhalt ganzer Dateien in eine Seite einfügen mit #include Aus Sicherheitsgründen dürfen diese Seiten nur im selben Verzeichnis wie das Template selbst sein Bsp.: #include (artikel_borland_text.txt) Verwendung von #parse wenn die Datei VTL enthält Bsp.: #parse (artikel_borland_text_formatiert.txt) Hilfsanweisung (Debugmethode) Die Hilfsanweisung #stop ist nützlich bei der Fehlersuche die Ausführung der Template Engine wird unterbrochen

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 31 VTL – Velocity Template Language Anweisungen – Beispiel (1) Auszug aus dem Sourcecode… /* Kunde anlegen */ Kunde kundenobjekt = new Kunde(); kundenobjekt.setName("Schmitz"); kundenobjekt.setGeschlecht("m"); /* Context bearbeiten */ con.put("kunde", kundenobjekt); System.out.println("- der Kunde " + ((Kunde)con.get("kunde")).getName() " wurde zugewiesen"); /* auch einen Vektor kann man reingeben */ Vector gekartikel = new Vector(); gekartikel.addElement( "MS Windows XP Home Edition"); gekartikel.addElement( "Data Becker: Masterung Office 2003"); gekartikel.addElement( "MS Office 2003"); /* gekaufte artikel werden übergeben */ con.put("gekaufteartikel",gekartikel); -> siehe Bsp.-Projekt [Velocity]BspVeloAnweisungen

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 32 VTL – Velocity Template Language Anweisungen – Beispiel (2) triviale Klasse Kunde wurde ein wenig erweitert Inhalt des Templates (Kunden.vm) #if ($kunde.Geschlecht == "m") Guten Tag Herr $kunde.Name! #elseif ($kunde.Geschlecht == "w") Guten Tag Frau $kunde.Name! #else Guten Tag Firma $kunde.Name! #end Der Kunde $kunde.getName() hat folgendes bei uns gekauft: #foreach ( $artikel in $gekaufteartikel ) $velocityCount. $artikel ## bei Office gibt es einen Text #if ($artikel == "MS Office 2003") Beschreibung: #include("art_Office_text.txt") #end ##if #set ($kunde.gekArtikelAnzahl = $kunde.gekArtikelAnzahl+1 ) #end ##foreach Der Kunde kaufte bis jetzt $kunde.gekArtikelAnzahl Artikel. #stop [Intern]Seine Zahlungsmoral ist sehr schlecht!

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 33 VTL – Velocity Template Language Anweisungen – Beispiel (2) Ausgabe des Beispiels: Guten Tag Herr Schmitz! Der Kunde Schmitz hat folgendes bei uns gekauft: 1. MS Windows XP Home Edition 2. Data Becker: Masterung Office MS Office 2003 Beschreibung: MS Office 2003 ist ein Produkt von unglaublicher Vielseitigkeit und durch open source Projekte einfach nicht zu ersetzen. Es vereint Komplexität mit einfacher Handhabung und stabiler Lauffähigkeit, wenn nicht gerade die Söhne der Chefs als Administratoren denken sie könnten mal eben einen Commerce Server aufsetzen. Der Kunde kaufte bis jetzt 3 Artikel.

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 34 VTL – Velocity Template Language – Anweisungen - Übung Lösung: 1.)Referenzen beginnen mit $ und man erhält etwas Anweisungen beginnen mit # und man macht etwas 2.) Befehl #set( … ) 3.) #include fügt Texte ohne Berücksichtigung der VTL ein, mit #parse werden VTL-Elemente dagegen berücksichtigt 1.) Worin liegt der Unterschied zwischen Referenzen und Anweisungen 2.) Wie lautet der Befehl um Referenzen Werte zuzuweisen? 3.) Was ist der Unterschied zwischen #include und #parse ?

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 35 VTL – Velocity Template Language – Makros (1) Ein Makro erlaubt es einem Programmierer ein Stück Code, wiederzuverwenden. Da der Aufbau der einzelnen Teile einer Webseite sich meistens ähnelt, kann dies sehr nützlich sein. Ein Makro unterscheidet sich von einer Funktion dadurch, dass es keine Rückgabewerte liefern kann. Die Definition eines Makros ist sehr einfach: #macro( Makroname ) Hallo Welt. #end Der Aufruf ebenso: #Makroname()

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 36 VTL – Velocity Template Language – Makros (2) Nun die Definition eines Makro mit Übergabeparametern: #macro( erstelleWarenliste $farbe $produktliste ) #foreach( $produkt in $produktliste ) $produkt #end #end Der Aufruf mit Übergabeparametern: #set( $gekaufteProdukte = ["MS Office 2002", "Windows XP", "SobigF"] ) #set( $farbe = "blue" ) #createTable( $farbe, $gekaufteProdukte ) Ausgabe: MS Office 2002 Windows XP SobigF

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 37 Velocity und Servlets – Erklärung Haupteinsatzgebiet von Velocity ist die java-Servlet Programmierung Vorteil der Trennung von Präsentationsschicht und Programmschicht kommt hier voll zur Geltung Velocity Distribution stellt eine Servlet Basisklasse zur Verfügung org.apache.velocity.servlet.VelocityServlet Bei Ableitung muss nur eine Methode implementiert werden public Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context context); Wichtige Unterschiede zur Applikation… Erzeugung des Kontext-Objekts schon in Basisklasse Aufruf von merge() für das Template in Basisklasse

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 38 Velocity und Servlets – Beispiel (1) Unsere Methode handleRequest(…) aus BspVeloServlet.java protected Template handleRequest( HttpServletRequest request, HttpServletResponse resonse, Context context) throws Exception { /* Kunde anlegen */ Kunde kundenobjekt = new Kunde(); kundenobjekt.setName("Schmitz"); kundenobjekt.setGeschlecht("m"); /* Context bearbeiten */ context.put("kunde", kundenobjekt); /* auch einen Vektor kann man reingeben */ Vector gekartikel = new Vector(); gekartikel.addElement( "MS Windows XP Home Edition"); gekartikel.addElement( "Data Becker: Masterung Office 2003"); gekartikel.addElement( "MS Office 2003"); /* gekaufte artikel werden übergeben */ context.put("gekaufteartikel",gekartikel); -> weiter nächste Folie…

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 39 Velocity und Servlets – Beispiel (2) Fortsetzung Methode handleRequest(…) aus BspVeloServlet.java Template temp = null; try { /* template */ temp = getTemplate("Kunden.vm"); } catch (ResourceNotFoundException rnfe ) { System.out.println("- Template wurde nicht gefunden"); } catch (ParseErrorException pee ) { System.out.println("- Template ist fehlerhaft"); } catch (MethodInvocationException mie){ System.out.println("- Template ruft fehlerhaftes auf"); } catch (Exception e) { System.out.println("- Sonstiger Fehler"); } // try return temp; }

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 40 Velocity und Servlets – Beispiel (3) Die Template sollten wegen der Übersicht in ein eigenes Verzeichnis /Templates dazu muss eine Methode in BspVeloServlet.java wie folgt überschrieben werden… protected Properties loadConfiguration(ServletConfig config ) throws IOException, FileNotFoundException { Properties p = new Properties(); String path = config.getServletContext().getRealPath("/templates"); if (path == null) { path = "/templates"; } p.setProperty( Velocity.FILE_RESOURCE_LOADER_PATH, path ); p.setProperty( "runtime.log", path + "velocity.log" ); return p; }

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 41 Velocity und Servlets – Beispiel (4) das Template (Kunden.vm) muss nun auf HTML-Basis gebracht werden Teil 1/2 Artikel des Kunden $kunde.Name #if ($kunde.Geschlecht == "m") Guten Tag Herr $kunde.Name! #elseif ($kunde.Geschlecht == "w") Guten Tag Frau $kunde.Name! #else Guten Tag Firma $kunde.Name! #end Teil 2/2 Der Kunde $kunde.getName() hat folgendes bei uns gekauft: #foreach ( $artikel in $gekaufteartikel ) $velocityCount. $artikel ## bei Office gibt es einen Text #if ($artikel == "MS Office 2003") Beschreibung: #include("art_Office_text.txt") #end ##if #set ($kunde.gekArtikelAnzahl = $kunde.gekArtikelAnzahl+1 ) #end ##foreach Der Kunde kaufte bis jetzt $kunde.gekArtikelAnzahl Artikel. #stop Seine Zahlungsmoral ist sehr schlecht!

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 42 Velocity und Servlets – Beispiel (5) Wir benötigen dazu noch einen Servlet/JSP Container Wir verwenden hier den Apache Jakarta Tomcat Wir legen unter webapp im Tomcat Verzeichnis die übliche Verzeichnisstruktur an… [Velocity]BspVeloServlet [Velocity]BspVeloServlet\Templates [Velocity]BspVeloServlet\WEB-INF [Velocity]BspVeloServlet\WEB-INF\lib [Velocity]BspVeloServlet\WEB-INF\classes kunden.vm in [Velocity]BspVeloServlet\Templates art_Office_text.txt in [Velocity]BspVeloServlet\Templates Kunde.class und BspVeloServlet.class in [Velocity]BspVeloServlet\WEB-INF\classes das velocity jar und das velocity-dep jar in [Velocity]BspVeloServlet\WEB-INF\lib Aufruf mit

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 43 Velocity und Servlets – Beispiel (6) In einem Browser sieht die Ausgabe nun folgendermaßen aus

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 44 Velocity, Servlets und Datenbankanbindung – Beispiel (1) Wir verwenden die Datenbank Interbase und legen eine Kunden- Datenbank (kunden.gdb) an mit folgenden Tabellen... create table Kunden( IDInteger not NULL, Namevarchar(80), Geschlechtchar(1) not NULL, primary key(ID) ); create table Artikel( IDInteger not NULL, Namevarchar(100), primary key(ID) ); create table KD_ART( KD_IDInteger not NULL, ART_IDInteger not NULL, AnzahlInteger, primary key(KD_ID,ART_ID), foreign key (KD_ID) references Kunden on delete cascade, foreign key (ART_ID) references Artikel on delete cascade );

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 45 Velocity, Servlets und Datenbankanbindung - Beispiel (2) Füllen der Tabellen mit einigen Daten insert into Kunden values (1,"Schmitz",'m'); insert into Kunden values (2,"Kleine",'w'); insert into Artikel values (1,"Borland Delphi 8"); insert into Artikel values (2,"MS Windows 98"); insert into Artikel values (3,"MS Windows 2000"); insert into Artikel values (4,"MS Windows NT 4"); insert into Artikel values (5,"MS Windows XP Home Edition"); insert into Artikel values (6,"MS Windows XP Professional"); # Herr Schmitz kaufte insert into KD_ART values (1,1,1); insert into KD_ART values (1,3,1); insert into KD_ART values (1,6,2); # Frau Kleine kaufte insert into KD_ART values (2,2,1); insert into KD_ART values (2,4,4);

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 46 Velocity, Servlets und Datenbankanbindung - Beispiel (3) Aufbau einer Datenverbindung wie üblich mit JDBC Hier jedoch mal keine Oracle Datenbank, sondern der Interclient Treiber für eine Interbase Datenbank import java.sql.*; nicht vergessen /* Artikel werden nun auch aus der Datenbank geholt */ /* Datenbankanbindung Interbase */ String url = "jdbc:interbase://localhost/C:/SQLDBS/Kunden.GDB"; try { Class.forName("interbase.interclient.Driver"); } catch(Exception e) { System.out.println("Klasse nicht gefunden"); }

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 47 Velocity, Servlets und Datenbankanbindung - Beispiel (4) Verbindung zur Datenbank mit Connection Objekt und Verwendung von Statement und ResultSet – Objekten um den Vector gekartikel zu füllen try { Connection conn = DriverManager.getConnection(url,"sysdba", "masterkey"); String sqlString = "select * from Artikel,KD_ART " + "where (KD_ART.KD_ID=1) and" + "(KD_ART.ART_ID=Artikel.ID);"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sqlString); /* Iteration durch die Datensätze */ while (rs.next()) { gekartikel.addElement( rs.getString(2)); } rs.close(); stmt.close(); } catch( SQLException sqle ) { System.out.println("Keine Verbindung oder SQL Fehler"); }

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 48 Velocity, Servlets und Datenbankanbindung - Beispiel (5) Nun Übergabe des Vektors an den Context und Laden des Templates... /* gekaufte artikel werden übergeben */ context.put("gekaufteartikel",gekartikel); Template temp = null; try { /* template */ temp = getTemplate("Kunden.vm"); } catch (ResourceNotFoundException rnfe ) { System.out.println("- Template wurde nicht gefunden"); } catch (ParseErrorException pee ) { System.out.println("- Template ist fehlerhaft"); } catch (MethodInvocationException mie){ System.out.println("- Template ruft fehlerhaftes auf"); } catch (Exception e) { System.out.println("- Sonstiger Fehler"); } // try return temp;

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 49 Velocity, Servlets und Datenbankanbindung - Beispiel (6) Aufruf mit let/BspVeloDBServlet In einem Browser sieht die Ausgabe nun folgendermaßen aus

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 50 Velocity, Servlets und Datenbankanbindung - Übung Lösung: 1.) org.apache.velocity.servlet.VelocityServlet 2.) public Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context context); 3.) Unterschiede... Erzeugung des Kontext-Objekts schon in Basisklasse Aufruf von merge() für das Template in Basisklasse 1.) Wie heisst die Servlet-Basisklasse? 2.) Welche Methode muß zwingend überschrieben werden? 3.) Was ist der Unterschied bei der Verwendung des Servlets zu einer Applikation mit Velocity?

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 51 Velocity-Tools (1) Die VelocityTools sind ein Komponenten-Bundle aus verschiedenen Subprojekten von Velocity, deren erklärtes Ziel es ist Werkzeuge und Infrastruktur zur Verfügung zu stellen um mit der Velocity- Engine Web-und normale Applikationen zu erstellen. Generic Tools ist eine Sammlung verschiedener nützlicher Klassen, die zu einem jeden Kontext hinzugefügt werden können. VelocityView enthält ein standalone servlet (VelocityViewServlet) welches templates für Web-Applikationen rendern kann. Ausserdem ist ein Toolbox Manager enthalten, welcher Templates Daten zur Verfügung stellen kann.

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 52 Velocity-Tools (2) VelocityStruts Eine Zusammenstellung von Klassen um Velocitys Template Engine zur Visualisierung von Web-Applikationen, die mit dem Jakarta Struts Framework laufen. Beispielapplikationen Die Verwendung aller oben genannten Klassen wird gezeigt und zu jedem Beispiel wird der entsprechende JSP-Code mitgeliefert um einen Vergleich zu ermöglichen.

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 53 Installation – Velocity Webseite Auf der Velocity-Seite Download wählen… Velocity zip (~ 5,46 MB) (current release) umfasst mehrere Dateien Wichtig jedoch sind die beiden jars velocity jar und velocity-dep jar Bei Servlets sollten diese in das Verzeichnis \lib der jeweiligen Anwendung kopiert werden Bei normalen Anwendungen sollten diese wie gewohnt zugänglich gemacht werden (Stichwort: Classpath)

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 54 [Exkurs] Installation – Eclipse und Velocity Plugin Webseite Dort kann das aktuelle Release von Eclipse kostenlos heruntergeladen werden, zur Zeit Version eclipse-SDK win32.zip (~ 62,6 MB) (Latest releases) Danach einfach unter Programme entpacken mit eclipse.exe wird Eclipse gestartet Velocity-Plugin für Eclipse von Webseite herunterladen org.vaulttec.velocity.ui_x.x.x.zip und org.apache.velocity_x.x.x.zip im Verzeichnis EclipseHome/Plugins entpacken Eclipse starten, Dateien *.vm nun mit Velocity Editor

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 55 Weiterführende Themen Singleton und das separate Instanzmodell Zwei Optionen um Velocity zu benutzen Singleton Modell: nur eine Instanz der Velocity Engine Separate Instanzmodell: Möglichkeit bel. Viele Instanzen von Velocity in einer JVM gleichzeitig zu konfigurieren und zu benutzen Einstellungsdatei Velocity.properties Viele Einstellungen, bspw. der Beginn des Schleifeniterationszählers $velocityCount bei 0 oder bei 1 außerdem Pfade für Ressourcen zu Servlets hinterlegbar

Fachhochschule Köln Institut für Informatik University of Applied Sciences Cologne Institute of Computer Science Campus Gummersbach WPF Datenbanken im Internet – Velocity Template Engine – WS2003/2004 Seite 56 Quellen Webseite von Eclipse Webseite des Velocity-Plugins für Eclipse Webseite von Sun (wegen Java) Buch – Portale und Webapplikationen mit Apache Frameworks ISBN – 36 – 1 (Fachhochschulbibliothek) Apache Jakarta Project