Apache Velocity

Developer(s)| Apache Software Foundation
Stable release|

2.3 / February 27, 2021; 5 years ago (2021-02-27)[1]

Repository| Velocity Repository
Written in| Java
Operating system| Cross-platform
Type| Template engine
License| Apache License 2.0
Website| velocity.apache.org

Apache Velocity first released in April 2001, is a Java-based template engine that provides a template language to reference objects defined in Java code. It aims to ensure clean separation between the presentation tier and business tiers in a Web application (the model–view–controller design pattern).

Velocity is an open source software project hosted by the Apache Software Foundation. It is released under the Apache License. Jon Scott Stevens derived the name from the AltiVec Velocity Engine in the PowerPC G4 chip.

## Contents

* 1 Uses
* 2 Code examples
* 3 See also
* 4 References
* 5 Bibliography
* 6 External links

## Uses

Some common types of applications that use Velocity are:

* AWS API Gateway body mapping template.Web applications: Web developers render HTML page structures. The content is populated with dynamic information. The page is processed with VelocityViewServlet or any of a number of frameworks that support Velocity.
* Source code generation: Velocity can be used to generate Java, SQL, or PostScript source code, based on templates. A number of open source and commercial development software packages use Velocity in this manner.[2]
* Automatic emails: Many applications generate automatic emails for account signup, password reminders, or automatically sent reports. Using Velocity, the email template can be stored in a text file, rather than directly embedded in Java code.
* XML transformation: Velocity provides an Ant task, called Anakia, which reads an XML file and makes it available to a Velocity template. A common application is to convert software documentation stored in a generic "xdoc" format into a styled HTML document.
* AWS API Gateway uses Apache Velocity engine for body mapping templates - JSON is output.

## Code examples

The following template:

## Velocity Hello World
<html>
<body>
#set( $foo = "Velocity" )
## followed by
Hello $foo World!
</body>
</html>

processed by Velocity produces the following HTML:

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

Another example using conditions:

#if( $foo < 10 )
**Go North**
#elseif( $foo == 10 )
**Go East**
#elseif( $bar == 6 )
**Go South**
#else
**Go West**
#end

AWS API Gateway body mapping template, for DynamoDB HTTP:

"TableName": "happy-marketer",
"KeyConditionExpression": "pk = :pk AND begins_with(sk, :sk)",
#if ($input.params('projectStatus') == 'archived')
"FilterExpression": "projectStatus = :Archived",
#else
"FilterExpression": "projectStatus = :InProgress OR projectStatus = :Completed",
#end
"ExpressionAttributeValues": {
":pk": {
"S": "project"

":sk": {
"S": "$context.authorizer.claims.email"

#if ($input.params('projectStatus') == 'archived')
":Archived": {
"S": "Archived"

#else
":InProgress": {
"S": "In Progress"

":Completed": {
"S": "Completed"

#end

Another example with optional array; without condition will fail because of invalid resulting JSON:

"email": "$context.authorizer.claims.email"
#if ($input.params('countries') != "")
, "countries": $input.params('countries')
#end

The syntax and overall concept of the Apache Velocity templates is similar to the syntax of the older WebMacro template engine, which is now also an open source project. [citation needed]

## See also

* Apache Torque
* FreeMarker
* Jakarta Server Pages
* Thymeleaf

## References

1. ↑ "Apache Velocity - Project News". Apache Software Foundation. https://velocity.apache.org/news.html.
2. ↑ "PoweredByVelocity". Velocity Wiki. Wiki.apache.org. 2009-12-30. http://wiki.apache.org/velocity/PoweredByVelocity.

## Bibliography

* Harrop, Rob; Darwin, Ian (August 30, 2004), Pro Jakarta Velocity: From Professional to Expert (1st ed.), Apress, p. 370, ISBN 978-1-59059-410-0, http://www.apress.com/book/view/9781590594100, retrieved September 4, 2009
* Cole, Jim; D. Gradecki, Joseph (July 16, 2003), Mastering Apache Velocity (1st ed.), John Wiley & Sons, p. 372, ISBN 978-0-471-45794-7, http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471457949.html, retrieved September 4, 2009

## External links

* Velocity at Apache
* User guide

* v
* t
* e

Apache Software Foundation

Top-level
projects|

* Accumulo
* ActiveMQ
* Airflow
* Ambari
* Ant
* Apex
* Aries
* Apache HTTP Server
* APR
* Avro
* Axis
* Axis2
* Beam
* Bloodhound
* Brooklyn
* Buildr
* Calcite
* Camel
* CarbonData
* Cassandra
* Cayenne
* Chemistry
* CloudStack
* Cocoon
* Cordova
* CouchDB
* cTAKES
* CXF
* Derby
* Directory
* Drill
* Empire-db
* Felix
* Flex
* Flink
* Flume
* Forrest
* Geronimo
* Giraph
* Gump
* Hadoop
* Hama
* HBase
* Helix
* Hive
* Impala
* Jackrabbit
* James
* Jini
* JMeter
* Kafka
* Karaf
* Kudu
* Kylin
* Lucene
* Mahout
* Marmotta
* Maven
* MINA
* mod perl
* MyFaces
* NetBeans
* Nutch
* ODE
* OFBiz
* Oozie
* OpenEJB
* OpenJPA
* OpenNLP
* OрenOffice
* ORC
* PDFBox
* Parquet
* Phoenix
* POI
* Pig
* Pivot
* Qpid
* Roller
* RocketMQ
* Samza
* ServiceMix
* Shiro
* SINGA
* Sling
* Solr
* Spark
* Stanbol
* Storm
* SpamAssassin
* Sqoop
* Struts 1
* Struts 2
* Subversion
* SystemML
* Tapestry
* Thrift
* Tika
* Tomcat
* Trafodion
* Traffic Server
* UIMA
* Velocity
* Wicket
* Xalan
* Xerces
* Yetus
* ZooKeeper

Commons|

* BCEL
* BSF
* Daemon
* Jelly
* Logging

Incubator|

* MXNet
* Taverna
* XAP

Other projects|

* Batik
* Chainsaw
* FOP
* Ivy
* Log4j

Attic|

* Abdera
* AxKit
* Beehive
* Bluesky
* iBATIS
* Cactus
* Click
* Continuum
* Deltacloud
* Etch
* Excalibur
* Harmony
* HiveMind
* Jakarta
* Lenya
* Shale
* Shindig
* Slide
* stdcxx
* Tuscany
* Wave
* Wink
* XMLBeans

Licenses|

* Apache License

* Category

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Apache Velocity. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Apache_Velocity&oldid=717533"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template