Apache Velocity | это... Что такое Apache Velocity? (original) (raw)
О проекте Microsoft под кодовым названием Velocity см. Velocity (кэш-память).
Apache Velocity
Тип | Обработчик шаблонов |
Разработчик | Apache Software Foundation |
Написана на | Java |
Операционная система | Кроссплатформенное ПО |
Последняя версия | 1.7 (29 ноября 2010) |
Лицензия | Apache 2.0 license |
Сайт | velocity.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
## $foo - это переменная шаблона Hello $foo World!С помощью символов «##» помечаются однострочные комментарии, символ «$» определяет, что за ним в шаблоне следует имя переменной.
Исходный 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 сгенерирует следующий текст документа:
Hello Velocity World!Синтаксис и общие концепции шаблона Apache Velocity очень похожи на синтаксис более раннего обработчика шаблонов WebMacro[2], который теперь также является проектом с открытым исходным кодом.
См. также
- WebMacro
- FreeMarker
- xmlc
- JSP
Литература
- Роб Харроп, Ян Дарвин Pro Jakarta Velocity: From Professional to Expert. — 1-е изд. — Apress, 2004. — 370 с. — ISBN 978-1590594100
- Джим Коул, Джосеф Д. Гродески Mastering Apache Velocity. — 1-е изд. — Wiley, 2003. — 372 с. — ISBN 978-0471457947
Примечания
- ↑ PoweredByVelocity. Velocity Wiki. Wiki.apache.org (30 декабря 2009). Архивировано из первоисточника 27 июля 2012. Проверено 3 апреля 2011.
- ↑ Apache Velocity — Overview. Раздел Acknowledgement. velocity.apache.org (30 ноября 2010). Архивировано из первоисточника 27 июля 2012. Проверено 29 сентября 2011.
Ссылки
- Официальный сайт (англ.)
- Velocity wiki (англ.)
- Сравнение обработчиков шаблонов для Java (англ.)
- Шаблоны на java с помощью Velocity. Часть 1 (рус.)
- Шаблоны на java с помощью Velocity. Часть 2 (рус.)
- Velocity Фильтр (рус.)
Apache Software Foundation | |
---|---|
Проекты верхнего уровня | ActiveMQ • Ant • Apache HTTP Server • APR • Beehive • Cassandra • Cayenne • Camel • Commons • Cocoon • CouchDB • DB • Directory • Excalibur • Forrest • Geronimo • Gump • Hadoop • Harmony • HBase • HiveMind • HttpComponents • iBATIS • Jackrabbit • James • JMeter • Lenya • Maven • Mina • mod perl • MyFaces • Nutch • OFBiz • OpenOffice.org • POI • Portals • Santuario • ServiceMix • Shale • Shiro • SpamAssassin • Struts • Subversion • Tapestry • Tcl • Tomcat • Turbine • Velocity • WebWork 2 • Wicket • Xalan • Xerces • XMLBeans |
Подпроекты | Apache Commons BCEL • BSF • JCS Apache Lucene Lucene Java • Lucene4c • Lucy• Solr Apache 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 |
Другие проекты | Batik • FOP •Log4j |
Развивающиеся проекты (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 • stdcxx • TripleSoup • UIMA• Adobe Flex |
Списанные проекты (Attic) | AxKit • Cactus • ECS • Jakarta • ORO • Regexp • Slide • Taglibs |
Лицензия: Лицензия Apache • Сайт: apache.org |
Веб-фреймворки | |
---|---|
ASP.NET | DotNetNuke • ASP.NET MVC • MonoRail |
ColdFusion | ColdSpring • Fusebox • Mach-II • Model-Glue |
Java | Apache (Cocoon • Struts • Velocity • WebWork 2) • AppFuse • Aranea • Eclipse • Facelets • Flexive • FreeMarker • Google Web Toolkit • Grails • Hamlets • ItsNat • JavaServer Faces • Jspx • JBoss Seam • jZeno • Makumba • OpenLaszlo • OpenXava • Reasonable Server Faces (RSF) • Restlet • RichFaces • RIFE • Shale • SmartClient • Spring • Stripes • Tapestry • ThinWire • Vaadin • WebMacro • WebWork • WebObjects • Wicket • ZK |
JavaScript | node.js • AJILE • Clean AJAX • Dojo Toolkit • Echo • Ext JS • jQuery • jMaki • Microsoft AJAX Library • MochiKit • MooTools • Prototype • qooxdoo • Rialto Toolkit • Rico • script.aculo.us • SmartClient • Spry • SproutCore • Yahoo! UI Library • Underscore • PhoneGap |
Perl | Catalyst • Interchange • Titanium • Maypole • HTML:Mason |
PHP | Acode • Akelos • BlueShoes • CakePHP • Canvas • CodeIgniter • Cotonti • DIY • Drupal • Fuse • Horde • Kohana • LiveStreet • PHP For Applications • PHPOpenbiz • PRADO • Qcodo • Seagull • Solar • Symfony • W3Core • Yii • Zend • Zoop • Joomla |
Python | CherryPy • Django • GAE framework • Karrigell • Nevow • Porcupine • Pylons • Pyramid • Spyce • TurboGears • Twisted • Tornado • Webware • Zope |
Ruby | Camping • Nitro • IOWA • Ramaze • Cerise • Merb • Ruby on Rails • Sinatra • Padrino |
Прочиеязыки | Alpha Five • Fusebox (ColdFusion • PHP) • Helma Object Publisher (Server-side) • Lift (Scala) • Magic (Scheme) • OpenACS (Tcl) • Seaside (Smalltalk) • UnCommon Web (Common Lisp) • Yaws (Erlang) • Oracle Application Express (PL/SQL) |