Apache Velocity

Поделись знанием:
Перейти к: навигация, поиск
Apache Velocity
Тип

Шаблонизатор

Разработчик

Apache Software Foundation

Написана на

Java

Операционная система

Кроссплатформенное ПО

Последняя версия

1.7 (29 ноября 2010)

Лицензия

Apache 2.0 license

Сайт

[velocity.apache.org y.apache.org]

К:Википедия:Статьи без изображений (тип: не указан)

Apache Velocity является проектом с открытым исходным кодом, развиваемым Apache Software Foundation. Ранее Apache Velocity был известен как Jakarta Velocity и входил в состав зонтичного проекта Apache Jakarta Project, но впоследствии был выделен в самостоятельный популярный проект. Velocity — это процессор шаблонов (обработчик шаблонов), базирующийся на Java, который обеспечивает простой, но мощный шаблонный язык, не требующий предварительной подготовки модели переменных для шаблона: в шаблон просто передаются ссылки на Java-объекты, а обработчик разбирает указанные методы и посредством Java reflection получает их значения. Его цель состоит в том, чтобы гарантировать чистое разделение между уровнем представления и бизнес-уровнем в Веб-приложении (шаблон проектирования Model-View-Controller), однако он не ограничен областью Веб-приложений.





Использование

Некоторые общие типы приложений, которые могут использовать Velocity:

  • Веб-приложения: Веб-дизайнеры создают HTML-страницы с указателями мест заполнения, которые будут динамически заменены необходимой информацией. Страницы могут обрабатываются с помощью VelocityViewServlet или любым другим из множества фреймворков, которые поддерживают Velocity.
  • Генерация исходного кода: Velocity может использоваться для генерации кода Java, SQL, PostScript, JavaScript, Perl и пр., базирующегося на шаблоне. Множество коммерческих пакетов программного обеспечения и пакетов программного обеспечения с открытым исходным кодом используют Velocity таким способом.[1]
  • Автоматические электронные письма: Существует множество приложений, генерирующих автоматические электронные письма для регистрации учётных записей или напоминания забытых паролей, а также письма, содержащие автоматически сгенерированные отчёты. При помощи Velocity шаблон электронного письма может быть сохранён в виде текстового файла, а не встроен непосредственно в Java-код.
  • XML-преобразование: Velocity обеспечивает задачу Ant, названную Anakia, которая читает XML-файл и делает его доступным шаблону Velocity. Общее приложение должно преобразовать документацию, сохранённую в универсальном формате «xdoc», в стилизованный документ HTML.

Пример кода

Пример использования шаблона и простого Java приложения. Исходный текст шаблона с именем template.vm

## Шаблон с именем template.vm
<html>
    <body>
       ## $foo - это переменная шаблона
       Hello $foo World!
    </body>
</html>

С помощью символов «##» помечаются однострочные комментарии, символ «$» определяет, что за ним в шаблоне следует имя переменной.

Исходный Java-код приложения, связывающего переменную «name» в Java-коде и переменную «$foo» в шаблоне:

import java.io.*;
import org.apache.velocity.*;
import org.apache.velocity.app.Velocity;

public class HelloVelocityWorld {
	public static void main(String[] args) throws IOException {
		
		Velocity.init(); // инициализация Velocity
		VelocityContext vc = new VelocityContext(); // создание контекста Velocity
		String name = "Velocity";
		vc.put("foo", name); // атрибут "name" связывается с именем переменной $foo в шаблоне и помещается в контекст
		
		Template template = Velocity.getTemplate("template.vm", "utf-8"); // загрузка шаблона с именем template.vm
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // создается выходной поток
		template.merge(vc, bw); // метод merge() принимает набор данных в виде объекта "vc" и объект потока "bw"		
		bw.flush();
		bw.close();
	}
}

в результате Velocity сгенерирует следующий текст документа:

<html>
    <body>
     Hello Velocity World!
    </body>
</html>

Синтаксис и общие концепции шаблона Apache Velocity очень похожи на синтаксис более раннего обработчика шаблонов WebMacro[2], который теперь также является проектом с открытым исходным кодом.

См. также

Напишите отзыв о статье "Apache Velocity"

Литература

  • Роб Харроп, Ян Дарвин. Pro Jakarta Velocity: From Professional to Expert. — 1-е изд. — Apress, 2004. — 370 с. — ISBN 978-1590594100.
  • Джим Коул, Джосеф Д. Гродески. Mastering Apache Velocity. — 1-е изд. — Wiley, 2003. — 372 с. — ISBN 978-0471457947.

Примечания

  1. [wiki.apache.org/velocity/PoweredByVelocity PoweredByVelocity]. Velocity Wiki. Wiki.apache.org (30 декабря 2009). Проверено 3 апреля 2011. [www.webcitation.org/69TFekxze Архивировано из первоисточника 27 июля 2012].
  2. [velocity.apache.org/engine/releases/velocity-1.7/overview.html Apache Velocity — Overview]. Раздел Acknowledgement. velocity.apache.org (30 ноября 2010). Проверено 29 сентября 2011. [www.webcitation.org/69TFfEQvf Архивировано из первоисточника 27 июля 2012].

Ссылки

  • [velocity.apache.org/ Официальный сайт]  (англ.)
  • [wiki.apache.org/velocity/ Velocity wiki]  (англ.)
  • [www.javaworld.com/javaworld/jw-11-2007/jw-11-java-template-engines.html Сравнение обработчиков шаблонов для Java] (англ.)


Отрывок, характеризующий Apache Velocity

10 го октября, в тот самый день, как Дохтуров прошел половину дороги до Фоминского и остановился в деревне Аристове, приготавливаясь в точности исполнить отданное приказание, все французское войско, в своем судорожном движении дойдя до позиции Мюрата, как казалось, для того, чтобы дать сражение, вдруг без причины повернуло влево на новую Калужскую дорогу и стало входить в Фоминское, в котором прежде стоял один Брусье. У Дохтурова под командою в это время были, кроме Дорохова, два небольших отряда Фигнера и Сеславина.
Вечером 11 го октября Сеславин приехал в Аристово к начальству с пойманным пленным французским гвардейцем. Пленный говорил, что войска, вошедшие нынче в Фоминское, составляли авангард всей большой армии, что Наполеон был тут же, что армия вся уже пятый день вышла из Москвы. В тот же вечер дворовый человек, пришедший из Боровска, рассказал, как он видел вступление огромного войска в город. Казаки из отряда Дорохова доносили, что они видели французскую гвардию, шедшую по дороге к Боровску. Из всех этих известий стало очевидно, что там, где думали найти одну дивизию, теперь была вся армия французов, шедшая из Москвы по неожиданному направлению – по старой Калужской дороге. Дохтуров ничего не хотел предпринимать, так как ему не ясно было теперь, в чем состоит его обязанность. Ему велено было атаковать Фоминское. Но в Фоминском прежде был один Брусье, теперь была вся французская армия. Ермолов хотел поступить по своему усмотрению, но Дохтуров настаивал на том, что ему нужно иметь приказание от светлейшего. Решено было послать донесение в штаб.
Для этого избран толковый офицер, Болховитинов, который, кроме письменного донесения, должен был на словах рассказать все дело. В двенадцатом часу ночи Болховитинов, получив конверт и словесное приказание, поскакал, сопутствуемый казаком, с запасными лошадьми в главный штаб.


Ночь была темная, теплая, осенняя. Шел дождик уже четвертый день. Два раза переменив лошадей и в полтора часа проскакав тридцать верст по грязной вязкой дороге, Болховитинов во втором часу ночи был в Леташевке. Слезши у избы, на плетневом заборе которой была вывеска: «Главный штаб», и бросив лошадь, он вошел в темные сени.
– Дежурного генерала скорее! Очень важное! – проговорил он кому то, поднимавшемуся и сопевшему в темноте сеней.
– С вечера нездоровы очень были, третью ночь не спят, – заступнически прошептал денщицкий голос. – Уж вы капитана разбудите сначала.
– Очень важное, от генерала Дохтурова, – сказал Болховитинов, входя в ощупанную им растворенную дверь. Денщик прошел вперед его и стал будить кого то:
– Ваше благородие, ваше благородие – кульер.
– Что, что? от кого? – проговорил чей то сонный голос.
– От Дохтурова и от Алексея Петровича. Наполеон в Фоминском, – сказал Болховитинов, не видя в темноте того, кто спрашивал его, но по звуку голоса предполагая, что это был не Коновницын.
Разбуженный человек зевал и тянулся.
– Будить то мне его не хочется, – сказал он, ощупывая что то. – Больнёшенек! Может, так, слухи.
– Вот донесение, – сказал Болховитинов, – велено сейчас же передать дежурному генералу.
– Постойте, огня зажгу. Куда ты, проклятый, всегда засунешь? – обращаясь к денщику, сказал тянувшийся человек. Это был Щербинин, адъютант Коновницына. – Нашел, нашел, – прибавил он.
Денщик рубил огонь, Щербинин ощупывал подсвечник.
– Ах, мерзкие, – с отвращением сказал он.
При свете искр Болховитинов увидел молодое лицо Щербинина со свечой и в переднем углу еще спящего человека. Это был Коновницын.
Когда сначала синим и потом красным пламенем загорелись серники о трут, Щербинин зажег сальную свечку, с подсвечника которой побежали обгладывавшие ее прусаки, и осмотрел вестника. Болховитинов был весь в грязи и, рукавом обтираясь, размазывал себе лицо.
– Да кто доносит? – сказал Щербинин, взяв конверт.
– Известие верное, – сказал Болховитинов. – И пленные, и казаки, и лазутчики – все единогласно показывают одно и то же.
– Нечего делать, надо будить, – сказал Щербинин, вставая и подходя к человеку в ночном колпаке, укрытому шинелью. – Петр Петрович! – проговорил он. Коновницын не шевелился. – В главный штаб! – проговорил он, улыбнувшись, зная, что эти слова наверное разбудят его. И действительно, голова в ночном колпаке поднялась тотчас же. На красивом, твердом лице Коновницына, с лихорадочно воспаленными щеками, на мгновение оставалось еще выражение далеких от настоящего положения мечтаний сна, но потом вдруг он вздрогнул: лицо его приняло обычно спокойное и твердое выражение.
– Ну, что такое? От кого? – неторопливо, но тотчас же спросил он, мигая от света. Слушая донесение офицера, Коновницын распечатал и прочел. Едва прочтя, он опустил ноги в шерстяных чулках на земляной пол и стал обуваться. Потом снял колпак и, причесав виски, надел фуражку.
– Ты скоро доехал? Пойдем к светлейшему.
Коновницын тотчас понял, что привезенное известие имело большую важность и что нельзя медлить. Хорошо ли, дурно ли это было, он не думал и не спрашивал себя. Его это не интересовало. На все дело войны он смотрел не умом, не рассуждением, а чем то другим. В душе его было глубокое, невысказанное убеждение, что все будет хорошо; но что этому верить не надо, и тем более не надо говорить этого, а надо делать только свое дело. И это свое дело он делал, отдавая ему все свои силы.