Viele Leute haben Velocity gesehen oder davon erfahren. Die wörtliche Übersetzung des Namens lautet: Geschwindigkeit, Schnelligkeit. Es wird in der Webentwicklung verwendet, aber nicht viele Leute kennen und verwenden es im Grunde und Struts, was halten Sie von Velocity? Probieren wir es aus und verstehen Sie das Konzept von Velocity. Durch die Einführung betonen wir die Probleme bei der Technologieauswahl, damit jeder bei der Auswahl der Projektentwicklung berücksichtigt werden kann und auch seine Ideen verstehen kann Eine sehr gute Denkweise, die jedem einen Sinneswandel und eine andere Denkweise ermöglicht.
Dieser Artikel basiert auf der Tatsache, dass Sie über gewisse Grundlagen in der Java-Entwicklung verfügen und MVC, Struts und andere Entwicklungsmodelle kennen.
Velocity ist eine Java-Template-Engine-Technologie. Das Projekt wurde von Apache vorgeschlagen und von einer anderen Engine-Technologie, Webmacro, abgeleitet. Was ist also die offizielle Definition von Geschwindigkeit? Apache definiert es als: eine auf Java basierende Template-Engine, die es jedem ermöglicht, eine einfache und leistungsstarke Template-Sprache zu verwenden, um in Java-Code definierte Objekte zu referenzieren. Die neueste Version ist 1.4. Weitere Informationen finden Sie unter http://jakarta.apache.org/velocity/index.html .
Um es deutlich auszudrücken: Velocity ist tatsächlich eine Implementierung der MVC-Architektur, konzentriert sich jedoch mehr auf die Beziehung zwischen Modell und Ansicht als Brücke zwischen ihnen. Ich glaube, jeder kennt Struts, die beliebteste Architektur von MVC. Viele Entwickler nutzen die Struts-Architektur ausgiebig, einschließlich der Verwaltungsplattformversionen der IBM Websphere 5 oder höher, und sie reduzieren effektiv Java Code erscheint in View (Jsp), aber die Verbindung zwischen Model und View basiert immer noch auf der Taglib-Technologie von Struts. Stellen Sie sich vor, der Front-End-Webdesigner ist nicht mit Struts oder sogar Taglib vertraut (ich glaube, es ist ziemlich schwierig, sich damit auszukennen). Dies gilt auch für das spätere Wartungspersonal, wodurch es für Webdesigner und Front-End-Entwicklungsingenieure sehr schwierig wird, miteinander zusammenzuarbeiten. In der realen Entwicklung gibt es immer noch eine Tatsache, dass die Arbeit zwischen Webdesignern sehr schwierig ist und Front-End-Entwickler sind möglicherweise immer noch komplizierter. Wie kann dieses Problem am besten gelöst werden? Werfen wir einen Blick auf Velocity oder dieses Konzept.
Beginnen wir mit dem einfachsten Velocity-Entwicklungsbeispiel, um Ihnen zu zeigen, wie Velocity funktioniert:
1. Erstellen Sie eine Datei. Der Dateiname lautet: hellavelocity.vm. Dies ist die Geschwindigkeitsvorlage (eigentlich dieselbe wie HTML). Der Inhalt lautet:
Willkommen $name bei Javayou.com!
heute ist $date.
2. Erstellen Sie eine Java-Datei, HelloVelocity.java, mit Inhalt:
Paket com.javayou.velocity;
import java.io.StringWriter;
import java.util.*;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
/**
* @Autor Liang.xf 14.12.2004
*/
öffentliche Klasse HelloVelocity {
public static void main(String[] args) löst eine Ausnahme aus {
//Initialisieren und erhalten Sie die Velocity-Engine
VelocityEngine ve = new VelocityEngine();
ve.init();
//Geschwindigkeitsvorlage abrufen
Vorlage t = ve.getTemplate("hellovelocity.vm");
//Den Geschwindigkeitskontext abrufen
VelocityContext context = new VelocityContext();
//Daten in Kontext füllen
context.put("name", "Liang");
context.put("date", (new Date()).toString());
//Für die spätere Anzeige geben Sie den Listenwert im Voraus ein
List temp = new ArrayList();
temp.add("1");
temp.add("2");
context.put("list", temp);
//Ausgabestream
StringWriterwriter = new StringWriter();
//Ausgabe konvertieren
t.merge(Kontext, Autor);
System.out.println(writer.toString());
}
}
3. Laden Sie die Velocity 1.4-ZIP-Datei unter http://jakarta.apache.org/site/binindex.cgi herunter, entpacken Sie sie, um Velocity-1.4.jar zu erhalten, und kompilieren Sie damit die obige Klasse HelloVelocity.java.
4. Kopieren Sie hellavelocity.vm auf 1 in das aktuelle Verzeichnis des Laufs. Für die Ausführung von HelloVelocity sind auch andere Pakete erforderlich, die Sie aus der heruntergeladenen Datei „Velocity1.4.zip“ unter „\velocity - 1.4\build\lib“ erhalten können Nachdem commons-collections.jar und logkit-1.0.1.jar eingeführt wurden, führen Sie java -cp .\bin; -Djava.ext.dirs=.\lib2 com.javayou.velocity.HelloVelocity aus, vorausgesetzt, die Klasse ist kompiliert in das Verzeichnis .\bin, und die von uns benötigten Klassenpakete werden im Verzeichnis .\lib2 abgelegt. Die laufende Struktur ist wie folgt:
Willkommen Liang bei Javayou.com!
Heute ist Dienstag, 14. Dezember, 19:26:37 Uhr CST 2004.
Das Obige ist das einfachste laufende Ergebnis. Lassen Sie es mich ungefähr wissen. Die beiden definierten Variablen $name und $date in der hellavelocity.vm-Vorlage sind context.put("name", "Liang") („date“, (new Date()).toString()) wird durch den eingestellten Wert ersetzt.
Unter diesem Gesichtspunkt wird die Verarbeitung von Geschäftsprozessen, einschließlich Geschäftsergebnissen, grundsätzlich vollständig auf der Modellebene gelöst, während die Ansichtsebene im Wesentlichen nur mithilfe einer einfachen VTL (Velocity Template Language) angezeigt wird. Wäre Jsp auf diese Weise nicht unnötig? Ja, dieses Nutzungsmodell ähnelt ein wenig der früheren CGI-Methode:) Velocity gibt automatisch Code aus, und Velocity ist in dieser Hinsicht auch sehr leistungsfähig. Velocity wird in Turbine verwendet, um viel Code zu generieren.
In Velocity beginnen Variablendefinitionen mit „$“ und $ dient als Bezeichner von Velocity. Buchstaben, Zahlen, Striche und Unterstreichungen können alle als definierte Variablen in Velocity verwendet werden.
Darüber hinaus müssen wir auch auf die charakteristischen Variablendefinitionen von Velocity achten, wie zum Beispiel: $student.No, $student.Address, die zwei Bedeutungsebenen haben: Die erste ist, ob der Student eine Hashtabelle ist, der Schlüssel No und will Der Wert von Address wird aus der Hashtabelle extrahiert. Der zweite Typ besteht darin, dass es sich um eine aufrufende Methode handeln kann, dh die beiden oben genannten Variablen werden in student.getNo() und student.getAddress() konvertiert. Velocity verfügt über ein Objekt für den vom Java-Code im Servlet zurückgegebenen Wert und kann auch die Methoden des Objekts aufrufen, z. B. $student.getAddress() usw. Ich werde hier keine Beispiele nennen und darauf näher eingehen.
Das obige Beispiel ist nur ein einfaches Beispiel. Natürlich sind viele Leute mit solchen Beispielen nicht mehr zufrieden. In tatsächlichen Anwendungen müssen wir oft einige selektive Anzeigen erstellen und einige iterative Daten auflisten, wie z. B. Listenlisten und natürlich Geschwindigkeit (). Insbesondere sollte es sich um eine VTL-Vorlagensprache handeln. Darüber hinaus unterstützt es auch einige andere häufig verwendete Anzeigen, z. B. Variablen innerhalb der Vorlage (z. B. Variablen in Jsp) und leistungsfähigere Anzeigen, z. B. das Erstellen von Makros, um eine Automatisierung zu erreichen . Weiterlesen.
Wir verwenden weiterhin das obige Beispiel und ändern den Inhalt in der Vorlage hellavelocity.vm wie folgt:
#set( $iAmVariable = "gut!" )
Willkommen $name bei Javayou.com!
heute ist $date.
$iAmVariable
Führen Sie den obigen Ausführungsbefehl erneut aus. Das Ergebnis ist:
Willkommen Liang bei Javayou.com!
Heute ist Dienstag, 14. Dezember, 22:44:39 Uhr CST 2004.
Gut!
Sie können sehen, dass die Variablen in der Vorlage als Anweisungen definiert sind, die mit #set beginnen, was nicht schwer zu verstehen ist. Nach der Ausführung werden die Variablen $iAmVariable in der Vorlage in die definierten Werte konvertiert:
Gut!
Schauen wir uns noch einmal eine einfache Auswahl an. Ändern Sie den Inhalt in der hellavelocity.vm-Vorlage in:
#set ($admin = "admin")
#set ($user = "user")
#if ($admin == $user)
Willkommen Admin!
#anders
Willkommen Benutzer!
#Ende
Führen Sie den Befehl run aus. Das Ergebnis ist:
Willkommen Benutzer!
Sie können sehen, dass die Urteilsaussagen einfach #if (), #else, #end und nicht sehr kompliziert sind.
Schauen wir uns weiterhin die Iterationsdaten an und ändern den Inhalt in der Vorlage hellavelocity.vm in:
#foreach( $product in $list )
$Produkt
#Ende
Führen Sie den Befehl run aus. Das Ergebnis ist:
#1
#2
Ist es nicht praktisch, die in der VelocityContext-Liste im Beispiel vorgespeicherten Werte aufzulisten? Verwenden Sie einfach #foreach ($variable in xx). Wenn die obige Liste durch eine Hashtabelle ersetzt wird, können Sie die folgende Syntax verwenden:
#foreach($key in $hashVariable.keySet() )
Wert von $key: $ hashVariable.get($key)
#Ende
Ich glaube nicht, dass diese Skripte überhaupt kompliziert sind.
Viele Leute werden auch fragen: Was ist, wenn es sich um Javabean handelt? Okay, fügen wir eine Bohne hinzu:
Paket com.javayou.velocity;
/**
* @Autor Liang.xf 14.12.2004
*/
öffentliche Klasse Student {
//Beachten Sie, dass die Attribute der Klasse öffentlich sind
public String no = "";
öffentliche String-Adresse = „“;
public Student(String _no, String _address) {
nein = _nein;
Adresse = _Adresse;
}
öffentlicher String getAddress() {
Absenderadresse;
}
public void setAddress(String address) {
this.address = Adresse;
}
öffentlicher String getNo() {
Rückkehr Nr.;
}
public void setNo(String no) {
this.no = nein;
}
}
Dieser Student ist eine vollständige Javabean oder Daten-Bean, eine allgemeine Klasse, die zum Laden von Daten verwendet wird. Dann ändern wir HelloVelocity.java in:
temp.add("1");
temp.add("2");
Ersetzen durch:
temp.add(new Student("123", "Guangzhou"));
temp.add(new Student("456", "Zhuhai"));
Ändern Sie dann den Inhalt von hellavelocity.vm in:
#foreach ($s in $students)
<$velocityCount> Adresse: $s.address
#Ende
Kompilieren Sie den Ausführungsbefehl erneut und führen Sie ihn aus. Die Ergebnisse sind wie folgt:
<1> Adresse: Guangzhou
<2> Adresse: Zhuhai
Auf diese Weise werden die Schülerdaten in der Liste ausgedruckt, und schon sind Sie fertig! Hier wird die integrierte Variable $velocityCount verwendet, die sich auf die Standardaufzählungssequenznummer bezieht. Sie beginnt bei 1. Sie kann auch in 0 geändert werden, muss jedoch in Velocity.properties geändert werden das Paket „velocity-1.4.jar“ im Verzeichnis org\apache\velocity \runtime\defaults .
Wie gehe ich mit komplexeren Iterationen um? Schauen wir uns zur Verdeutlichung das folgende Vorlagenbeispiel an:
#foreach ($element in $list)
-- inner foreach --
#foreach ($element in $list)
Das ist $element.
$velocityCount
#Ende
-- inner foreach --
-- äußeres foreach --
Das ist $element.
$velocityCount
-- äußeres foreach --
#Ende
Wie Sie sehen, unterstützt Velocity die Tag-Verschachtelung. Ich werde sie hier nicht ausführlich demonstrieren.
Wenn Sie über das Beispiel nachdenken, das wir gerade etwas ausführlicher gegeben haben, können Sie bereits erkennen, welchen Nutzen Velocity hat. Das ist das Servlet + Velocity-Modell. Erinnern Sie sich außerdem noch an unser frühes Jsp-Entwicklungsmodell Jsp+JavaBean? Hier haben wir zu Servlet+JavaBean+Velocity gewechselt, es hat Jsp+JavaBean ersetzt und den Java-Code gründlicher aus Jsp (vm) entfernt, dann sind die Kosten höher Dass Java-Code immer mehr oder weniger in JSP erscheint. Auch wenn dies ohne Java-Code möglich ist, wissen Entwickler, die komplexe Architektursysteme erstellt haben, dass die Kosten ebenfalls sehr hoch sind und es hinsichtlich der Wartbarkeit gewisse Schwierigkeiten bei der integrierten Entwicklung gibt mit Webdesignern, sodass wir hier das Gefühl haben, dass das Servlet+JavaBean+Velocity-Modell das Konzept von OOD besser verwirklicht. In Bezug auf die Effizienz müssen Sie sich keine Sorgen machen. Diese Kombination ist effizienter als die Servlet+Jsp-Methode.
Es sollte viele Leute geben, die bereit sind, etwas über Velocity zu lernen, aber vielleicht können nicht viele es tatsächlich auf Projekte anwenden (einige Projekte verwenden es immer noch, wie z. B. Jute, schließlich ist Jsp im Vergleich zu Jsp standardmäßiger und weit verbreiteter). und viele Entwicklungstools wurden verwendet, um die JSP-Entwicklung zu unterstützen. Die Funktion von Velocity ist jedoch nicht auf die Konkurrenz mit Jsp beschränkt. Wie bereits erwähnt, kann Turbine auch geringfügige Änderungen an der automatischen Codeausgabe vornehmen Es ist eine sehr gute Idee, es in einen Codegenerator oder eine andere Vorlagengenerierung zu integrieren.
Okay, werfen wir einen Blick auf einige häufige Probleme, auf die man achten muss, wenn man sich intensiv mit Velocity befassen möchte, um Projekte durchzuführen. Das erste ist das Problem der Internationalisierung.
Velocity selbst unterstützt die internationale Kodierungskonvertierung von Vorlagen. Schauen Sie sich die von Velocity bereitgestellten Methoden an:
Öffentliche Vorlage getTemplate (Stirng-Vorlage, String-Kodierung),
Es wird spekuliert, dass mit diesem Ansatz keine vollständige Internationalisierung erreicht werden kann.
Das einfachste Konzept der Internationalisierung in Struts besteht darin, internationale Sprach-Tags auf JSP zu verwenden, und jede Sprache verwendet eine andere Sprach-Tag-Bibliothek. Dies kann tatsächlich manuell durchgeführt werden. Ja, es erfordert nur ein wenig manuelle Verarbeitung.
Glücklicherweise hat jemand das oben genannte Problem bereits gelöst und die Tools von Velocity erstellt: MessageTool, das den variablen Text für die Aufnahme internationalisierter Beschriftungen bereitstellt. Auf diese Weise müssen Sie lediglich Beschriftungscode schreiben, wie zum Beispiel: $text.get('title ' ), spezifischere Inhalte finden Sie auch unter http://jakarta.apache.org/velocity/tools/struts/MessageTool.html .
Okay, das basiert alles auf der Einführung von Velocity. Lassen Sie uns über andere Erweiterungen sprechen. Einige Leute haben angemerkt, dass Velocity keine Standard-MVC-Struktur ist. Ja, wir haben zu Beginn gesagt, dass Velocity nur eine gute Kombination aus Modell und Ansicht ist und schließlich noch keine gute Kombination von MVC darstellt gebildet worden. Glücklicherweise hat Apache VelocityStruts basierend auf der Kombination von Struts und Velocity eingeführt. Wir können diesen Teil der Aussage in einem späteren Thema vorstellen. Es basiert auf der Struktur von Struts und der Aktion der Geschäftslogik Schließlich wird der Geschäftsprozess basierend auf Velocity auf die Anzeigeebene verlagert, wodurch Jsp als Ansichtsebene ersetzt wird. Wir haben oben auch gesehen, dass die genannten Beispiele im Wesentlichen auf Prinzipien und Demonstrationen basieren und nicht eng mit der Webentwicklung verknüpft sind. Wir werden diesen Aspekt bei der Beschreibung des Inhalts von VelocityStruts kombinieren.
Einführung in die Verwendung von Velocity – Code in Java
1. Initialisieren Sie zunächst das Objekt
VelocityContext context = new VelocityContext();
StringWriterwriter = new StringWriter();
String-Kodierung2 = "GBK";
2. PROPERTY_PATH = TEMPLATE_INIT_PATH in der Systemeigenschaftendatei (Geben Sie den für die Geschwindigkeit erforderlichen Pfad der Eigenschaftendatei an.)
3. Inhalte in Eigenschaften
file.resource.loader.path = D:/resin/webapps/mip/files/templateupload/ (wo sich die Vorlage befindet)
4. Dann initialisieren Sie Velocity.init(PROPERTY_PATH);
5. Entsprechen Sie den Beschriftungen in Geschwindigkeit Java context.put(key, value);
6. Laden Sie dann die Datei Velocity.mergeTemplate(templateName,kodierung2,kontext,writer);
7. Rufen Sie abschließend Generator.writeToFile() auf, um die Datei zu generieren.
8. Die writeToFile-Funktion lautet wie folgt:
FileOutputStream of = new FileOutputStream(theFile);
of.write(writer.toString().getBytes("GBK"));
// String tt =writer.toString();
of.flush();
of.close();
Dieser Artikel stammt aus dem CSDN-Blog. Bitte geben Sie beim Nachdruck die Quelle an: http://blog.csdn.net/sunrui_work/archive/2009/12/18/5029982.aspx