Apache Velocity

О проекте Microsoft под кодовым названием Velocity см. Velocity (кэш-память).
Apache Velocity
Логотип программы Apache Velocity
Тип Шаблонизатор
Разработчик Apache Software Foundation
Написана на Java
Операционная система Кроссплатформенное ПО
Первый выпуск 21 ноября 2006[1]
Аппаратная платформа Java Virtual Machine
Последняя версия 2.3 (27 февраля 2021)
Репозиторий svn.apache.org/repos/asf…
github.com/apache/veloci…
Лицензия Apache 2.0 license
Сайт velocity.apache.org
Логотип Викисклада Медиафайлы на Викискладе

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

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

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

  • Веб-приложения: Веб-дизайнеры создают HTML-страницы с указателями мест заполнения, которые будут динамически заменены необходимой информацией. Страницы могут обрабатываются с помощью VelocityViewServlet или любым другим из множества фреймворков, которые поддерживают Velocity.
  • Генерация исходного кода: Velocity может использоваться для генерации кода Java, SQL, PostScript, JavaScript, Perl и пр., базирующегося на шаблоне. Множество коммерческих пакетов программного обеспечения и пакетов программного обеспечения с открытым исходным кодом используют Velocity таким способом[2].
  • Автоматические электронные письма: Существует множество приложений, генерирующих автоматические электронные письма для регистрации учётных записей или напоминания забытых паролей, а также письма, содержащие автоматически сгенерированные отчёты. При помощи 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[3], который теперь также является проектом с открытым исходным кодом.

См. также

Литература

  • Роб Харроп, Ян Дарвин. 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. https://projects.apache.org/json/projects/velocity.json
  2. PoweredByVelocity  (неопр.). Velocity Wiki. Wiki.apache.org (30 декабря 2009). Дата обращения: 3 апреля 2011. Архивировано из оригинала 27 июля 2012 года.
  3. Apache Velocity — Overview  (неопр.). Раздел Acknowledgement. velocity.apache.org (30 ноября 2010). Дата обращения: 29 сентября 2011. Архивировано из оригинала 27 июля 2012 года.

Ссылки

  • Официальный сайт  (англ.)
  • Velocity wiki  (англ.)
  • Сравнение обработчиков шаблонов для Java (недоступная ссылка) (англ.)


Перейти к шаблону «Apache»
Проекты верхнего уровня
Подпроекты
Apache Commons
Lucene
DB[вд]
  • Derby
  • Torque[англ.]
  • DdlUtils[англ.]
  • OJB[англ.]
  • JDO[англ.]
Apache Web Services[англ.]
  • Axis[англ.]
  • Axis2[англ.]
  • CXF
  • WS-Commons[англ.]
  • EWS[англ.]
  • JaxMe[англ.]
  • jUDDI[англ.]
  • Kandula[англ.]
  • Mirae[англ.]
  • Muse[англ.]
  • Pubscribe[англ.]
  • Sandesha[англ.]
  • Scout[англ.]
  • SOAP[англ.]
  • Synapse[англ.]
  • TSIK[англ.]
  • Tuscany[англ.]
  • Woden[англ.]
  • WSIF[англ.]
  • WSRF[англ.]
  • WSS4J[англ.]
  • XML-RPC[англ.]
Другие проекты
Развивающиеся проекты (Incubator)
  • XAP[англ.]
  • River[англ.]
  • OpenEJB[англ.]
  • OpenJPA[англ.]
  • Graffito[англ.]
  • Tuscany[англ.]
  • Log4Net[англ.]
  • Roller
  • Felix
  • Abdera[англ.]
  • CeltiXfire[англ.]
  • FtpServer[англ.]
  • Heraldry[англ.]
  • Ivy[англ.]
  • JuiCE[англ.]
  • Kabuki[англ.]
  • Lokahi[англ.]
  • Lucene.Net[англ.]
  • mod_ftp[англ.]
  • NMaven[англ.]
  • Ode[англ.]
  • stdcxx[англ.]
  • Woden[англ.]
  • WSRP4J[англ.]
  • Yoko[англ.]
  • WADI[англ.]
  • Qpid
  • TripleSoup[англ.]
  • UIMA[англ.]
  • Adobe Flex
Списанные проекты (Attic)
  • AxKit[англ.]
  • Beehive[англ.]
  • Cactus[англ.]
  • ECS[англ.]
  • Excalibur[англ.]
  • Harmony
  • HiveMind[англ.]
  • iBATIS[англ.]
  • Jakarta
  • ORO[англ.]
  • Regexp[англ.]
  • Shale
  • Slide[англ.]
  • Taglibs[англ.]