Что за программа velocity

Apache Velocity — это программный продукт, состоящий из нескольких библиотек Java. Основным компонентом продукта является Velocity Engine, библиотека, позволяющая генерировать динамический вывод контента (изображения, ссылки, текст) на основе шаблонов сообщений.

Условные переменные Velocity, такие как if/else, for и foreach, позволяют задавать гибкие условия для отображения контента в зависимости от параметров объекта JSON. Подробнее о типах переменных и функций Velocity, используемых в eSputnik >

Velocity Engine можно использовать как в массовых, так и в триггерных рассылках.

Динамический контент в сообщениях используется для подстановки персонализированных данных в момент отправки рассылки — например, товара из оформленного заказа, имени пользователя или его персонального промокода.

Данные для подстановки в сообщение могут передаваться:

  • из карточки контакта в eSputnik
  • из внешних источников данных
  • из событий

Откуда бы вы ни передавали данные, в eSputnik они поступают в формате JSON-объекта. Чтобы подставить данные из такого объекта в сообщение, используются переменные Velocity. Они представляют собой ссылки на определенные элементы в JSON-коде. Чем больше пользовательских данных у вас есть, тем больше динамических переменных вы можете использовать.

STARLINK — first test: Elon Musk’s Internet for $99!

Обращение к значениям объекта JSON через переменные

JSON (JavaScript Object Notation) — это человекочитаемый формат обмена текстовыми данными, основанный на JavaScript.

Форматирование JSON-объекта задается с помощью фигурных скобок < >, содержащих данные с ключами и значениями. Пары ключей и их значений разделяются двоеточием: . Каждая пара ключа и значения отделяется запятой:

Например, объект, который передается в событии API-методом smartsend, содержит две пары ключа и значения и выглядит следующим образом:

Чтобы отобразить переданные значения в сообщении, нужно использовать в сообщении velocity-структуру $!data.get(‘discount’) и $!data.get(‘link’), где:

  • $!data.get — команда извлечь данные,
  • значение в скобках и кавычках указывает поле, из которого следует извлечь данные.

После подстановки данных сообщение будет выглядеть следующим образом:

Значение «5%» заменяет переменную «discount», а значение https://site.com/items_for_sale заменяет переменную «link» и подставляется в кнопку.

Дополнительные сведения об использовании velocity-переменных см. в следующих статьях:

  • Переменные в профиле контакта и возможности Velocity >
  • Использование Velocity в email >
  • Использование Velocity в мобильных пушах и других каналах >
  • Настройка передачи данных из Google-таблиц в письма >

Источник: esputnik.com

Введение в Apache Velocity

Это веб-фреймворк с открытым исходным кодом, предназначенный для использования в качестве компонента представления в архитектуре MVC, и он обеспечивает альтернативу некоторым существующим технологиям, таким как JSP.

Читайте также:
Bmp png что это такое в какой программе

Увеличь скорость интернета! Загрузки полетят, сайты откроются быстрее, а PING в играх снизится!

Скорость может быть использована для генерации файлов XML, SQL, PostScript и большинства других текстовых форматов.

В этой статье мы рассмотрим, как его можно использовать для создания динамических веб-страниц.

2. Как работает скорость

Основной класс Velocity -VelocityEngine.

Он организует весь процесс чтения, анализа и генерации контента с использованием модели данных и шаблона скорости.

Проще говоря, вот шаги, которые мы должны выполнить для любого типичного применения скорости:

  • Инициализировать двигатель скорости
  • Прочитайте шаблон
  • Поместите модель данных в объект контекста
  • Объединить шаблон с данными контекста и визуализировать представление

Let’s go through an example, выполнив следующие простые шаги:

VelocityEngine velocityEngine = new VelocityEngine(); velocityEngine.init(); Template t = velocityEngine.getTemplate(«index.vm»); VelocityContext context = new VelocityContext(); context.put(«name», «World»); StringWriter writer = new StringWriter(); t.merge( context, writer );

3. Maven Зависимости

Для работы с Velocity нам необходимо добавить следующие зависимости в наш проект Maven:

org.apache.velocity velocity 1.7 org.apache.velocity velocity-tools 2.0

Последняя версия обеих этих зависимостей может быть здесь:velocity иvelocity-tools.

4. Язык шаблона скорости

Velocity Template Language (VTL) обеспечивает самый простой и чистый способ включения динамического содержимого в веб-страницу с использованием ссылок VTL.

Задание VTL в шаблоне скорости начинается с$ и используется для получения значения, связанного с этим заданием. VTL также предоставляет набор директив, которые можно использовать для управления выводом кода Java. Эти директивы начинаются с#.

4.1. Рекомендации

В Velocity есть три типа ссылок: переменные, свойства и методы:

  • variables — определяется на странице с помощью директивы#set или значения, возвращаемого из поля объекта Java:

#set ($message=»Hello World»)
$customer.name
$customer.getName()

Конечное значение, полученное из каждой ссылки, преобразуется в строку, когда оно отображается в окончательном выводе.

4.2. Директивы

VTL предоставляет богатый набор директив:

  • set — может использоваться для установки значения ссылки; это значение может быть присвоено переменной или ссылке на свойство:

#set ($message = «Hello World») #set ($customer.name = «Brian Mcdonald»)
#if($employee.designation == «Manager»)

Manager

#elseif($employee.designation == «Senior Developer»)

Senior Software Engineer

#else

Trainee

#end
#include(«one.gif»,»two.txt»,»three.html». )
#parse (Template)
#set($firstName = «David») #set($lastName = «Johnson») #set($dynamicsource = «$firstName$lastName») #evaluate($dynamicsource)
#macro(tablerows) #end
Этот макрос теперь можно разместить в любом месте шаблона как #tablerows():
#macro(tablerows $color $productList) #foreach($product in $productList)

$product.name

#end #end

4.3. Другие преимущества

  • math — несколько встроенных математических функций, которые можно использовать в шаблонах:

#set($percent = $number / 100) #set($remainder = $dividend % $divisor)
#set($array = [0..10]) #foreach($elem in $arr) $elem #end

5. Сервлет скорости

Основная задача Velocity Engine — генерировать контент на основе шаблона.

Сам по себе движок не содержит каких-либо веб-функций. Для реализации веб-приложения нам нужно использовать фреймворк на основе сервлета или сервлета.

Velocity предоставляет одну из готовых реализацийVelocityViewServlet, которая является частью подпроекта инструментов скорости.

Читайте также:
Программа quick step что это

Чтобы использовать встроенные функции, предоставляемыеVelocityViewServlet,, мы можем расширить наш сервлет отVelocityViewServlet и переопределить методhandleRequest():

6. конфигурация

6.1. Веб-конфигурация

Давайте теперь посмотрим, как настроитьVelocityViewServlet вweb.xml.

Нам нужно указать дополнительные параметры инициализации, которые включаютvelocity.properties иtoolbox.xml:

apache-velocity //. velocity org.apache.velocity.tools.view.VelocityViewServlet org.apache.velocity.properties /WEB-INF/velocity.properties //.

Нам также нужно указать отображение для этого сервлета. Все запросы шаблонов скорости (*.vm) должны обслуживаться сервлетом скорости:

velocityLayout *.vm

6.2. Загрузчик ресурсов

Velocity предоставляет гибкую систему загрузки ресурсов. Это позволяет одному или нескольким загрузчикам ресурсов работать одновременно:

  • FileResourceLoader
  • JarResourceLoader
  • ClassPathResourceLoader
  • URLResourceLoader
  • DataSourceResourceLoader
  • WebappResourceLoader

Эти загрузчики ресурсов настроены вvelocity.properties:

resource.loader=webapp webapp.resource.loader.class=org.apache.velocity.tools.view.WebappResourceLoader webapp.resource.loader.path = webapp.resource.loader.cache = true

7. Шаблон скорости

Шаблон скорости — это место, где написана вся логика генерации вида. Эти страницы написаны с использованием Velocity Template Language (VTL):

$products.size() Products on Sale!


We are proud to offer these fine products at these amazing prices. . #set( $count = 1 )

Serial # Product Name Price

#foreach( $product in $products )

#set( $count = $count + 1 ) #end

$count) $product.getName() $product.getPrice()

Источник: www.codeflow.site

Вышло долгожданное обновление Velocity: шаблонить стало немного проще

Первого декабря 2008 г. Apache объявила о выпуске новой версии давно не обновлявшегося шаблонного движка Velocity, за номером 1.6, а еще двумя неделями позже появился апдейт со свежими фиксами, Velocity Engine 1.6.1. Те, кто используют Velocity в своих проектах, будут рады узнать о новых возможностях, появившихся в новой версии. Те же, кто Velocity не используют, возможно, откроют для себя новый полезный инструмент.

Краткая справка

Apache Velocity — программный продукт, состоящий из ряда Java-библиотек. Продукт разрабатывается и поддерживается в рамках Apache Software Foundation, и распространяется как программное обеспечение с открытым кодом под лицензией Apache License 2.0. Главным компонентом продукта является Velocity Engine — библиотека, позволяющая формировать выходные тексты на основе шаблонов, что в просторечии именуется шаблонным движком.

Зачем нужны шаблонные движки

Вообще-то наиболее широкое применение шаблонные движки находят в веб разработке, но проще всего показать пользу от их использования на примере формирования текста письма. Допустим, у нас есть база пользователей, и мы хотим разослать анонс нового продукта. Текст стандартный, меняется только имя, дата и название продукта. Открываем блокнот и пишем:

Компания «Рога и Копыта» с радостью доводит до Вашего сведения, что $product.name поступил в свободную продажу! Спрашивайте в аптеках города.

Служба маркетинга компании «Рога и Копыта»

Как вы уже догадались, $customer.name, $product.name и $date — суть переменные, вместо которых при формировании выходного текста будут подставлены реальные значения. Возникает вопрос: как передать эти значения шаблону? Делается это очень просто. В исходнике Java прописываем:

VelocityEngine velocity = new VelocityEngine();
velocity.init();

Template letter = velocity.getTemplate(«letter.vm»);

Date now = new Date();
Product product = someDAO.getLatestProduct();
List customers = someDAO.getCustomers();

for (Customer customer : customers) VelocityContext vc = new VelocityContext();
vc.put(«customer», customer);
vc.put(«product», product);
vc.put(«date», now);

StringWriter sw = new StringWriter();
letter.merge(vc, sw);
// делаем с полученным текстом что хотим

Как видите, ничего особо мудреного тут нет: объекты Java, каждый под своим ключом, закладываются в экземпляр VelocityContext, который по сути представляет собой обычный Map. Когда в процессе слияния контекста с шаблоном движок встречает в тексте переменную, он использует ее имя в качестве ключа, и извлекает по нему из мапы соответствующий объект. Телемаркет!

Разумеется, нет никаких проблем приспособить шаблоны и для генерации HTML-страниц, что многие с успехом и сделали в свое время, выбросив на свалку истории во многом геморройную технологию JSP. Детальное описание языка шаблонов VTL и инструкцию по его использованию можно найти на сайте разработчика.

Но это все была предыстория. А теперь о собственно новой версии. На радость разработчикам, в 1.6 появился ряд долгожданных вкусностей. Рассмотрим их по порядку.

1. Директива #evaluate

Вот простой и жизненный пример: допустим, в базе хранится текст статьи. Где-то в середине мы хотим дать врезку с некими живыми данными: скажем, с результатами интернет-голосования. Это нетрудно: достаточно в нужном месте подключить файл шаблона, который выводит результаты в форме HTML:

Беда, однако, в том, что если мы поместим текст статьи как обычную переменную ($article.text), ее содержимое тупо выведется на странице как есть. То есть вместо красивой диаграммы читатель увидит невразумительное #parse(«poll.vm»). Чтобы достичь нужного нам эффекта, нужно каким-то образом заставить Velocity интерпретировать текст статьи как код шаблона. Одной из немногих возможностей сделать это в прежних версиях было задействовать дополнительный компонент RenderTool из Velocity Toolbox. Что было, в принципе, терпимо, но несколько неудобно. С выходом 1.6 мы получили возможность делать это в одну строку:

2. Директива #define

Эта директива работает во многом подобно макросу, с той разницей, что куски шаблонного кода, определенные с его помощью, могут не только вызываться по месту, но и присваиваться контекстной переменной и далее использоваться там, где они окажутся нужны:

Нужна ли нам такая конструкция на практике? Не так чтобы очень, но при ее наличии некоторые вещи можно реализовать более естественным способом. Например, что-нибудь типа шаблонного полиморфизма.

3. Директива #break

Мелочь, а приятно: теперь из цикла #foreach можно выскочить в одну строчку. При тех скудных средствах, которые имелись в Velocity для выражения логики управления, добавление целой новой директивы — уже огромный прорыв.

4. Возможность организовывать макросы в файлы

Одним из досадных ограничений старого Velocity было жестко фиксированное местоположение файла с макросами. Теперь макросы можно организовывать по своему усмотрению, и подключать их по мере необходимости:

Вместо заключения

В этом обзоре были рассмотрены наиболее интересные новшества, появившиеся в Velocity Engine версии 1.6. Более подробно о новых возможностях движка можно прочитать на сайте продукта в разделе Changes.

Ну и резюмируя, не могу не отметить: «Жить стало лучше, жить стало веселей»!

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru