McDonnell Douglas AH-64 Apache
- 1 year ago
- 0
- 0
Apache Velocity — это проект с открытым исходным кодом, развиваемый организацией-фондом Apache Software Foundation . Ранее Apache Velocity был известен как Jakarta Velocity и входил в состав зонтичного проекта Apache Jakarta Project , но впоследствии был выделен в самостоятельный популярный проект. Velocity — это процессор шаблонов ( обработчик шаблонов ), базирующийся на Java , который обеспечивает простой, но мощный шаблонный язык, не требующий предварительной подготовки модели переменных для шаблона: в шаблон просто передаются ссылки на Java-объекты, а обработчик разбирает указанные методы и посредством Java Reflection API получает их значения. Его цель состоит в том, чтобы гарантировать чистое разделение между уровнем представления и бизнес-уровнем в Веб-приложении (шаблон проектирования Model-View-Controller ), однако он не ограничен областью Веб-приложения.
Некоторые общие типы приложений, которые могут использовать Velocity:
Пример использования шаблона и простого 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 , который теперь также является проектом с открытым исходным кодом.