''partially updated for version 2.5.0''

!!!News

* Latest __[version 2.4.0|Download]__ (Sep 2011) [changelog]


!!!ztemplates

ztemplates is a simple, easy to learn open source web framework based on Java jdk1.5 or later. 

It is licensed under the [Apache 2.0 License|http://www.apache.org/licenses/LICENSE-2.0] 

It runs in any Servlet Spec 2.5 or later compliant web-container, like [apache tomcat 6|http://tomcat.apache.org].

ztemplates supports [Apache Velocity|http://velocity.apache.org/], JSP and [FreeMarker|http://www.freemarker.org] out of the box and can easily be extended to your preferred rendering technology. 

It integrates seamless with [Spring|Spring support for action pojos]. 

ztemplates integrates into your [maven|ztemplatesAndMaven] projects.

Available on [sourceforge and in maven central|download].

!!! Features
* simple
* statefree
* Java centric
* based on annotations and conventions
* robust, refactoring-safe urls by two way action-to-url and url-to-action annotation based mapping
* [REST|http://en.wikipedia.org/wiki/Representational_State_Transfer]-ful urls: define variables in the url and map them to pojo properties
* unobtrusive
** no constraints on the url format
** ztemplates is a filter that passes through urls it cannot match so you can transparently add it to or remove it from your existing webapp. 
* self-contained components. Components can be packaged into a jar and installed by dropping the jar into WEB-INF/lib
* integrated [JavaScript loading framework|BrowserBasedJavascript]
* [CMS] in the making

!!!Monkey see - monkey do: Hello World

All files in same location.

![View layout|ztemplates-render]

Specify the view layout (preferred technology: Velocity=simple)

HelloWorldView.vm:

{{{

<html>
<body>
  <h1>Hello World!</h1>
  <div>
    $content
  </div>
</body>
</html>

}}}

![View data|ztemplates-render]

{{{

/**
* data holder for view
*/
@ZRenderer(ZVelocityRenderer.class)
public class HelloWorldView {
  @ZExpose
  final String content;

  public HelloWorldView(String content) {
    this.content = content;
  }
}

}}}


![Action|ztemplates-actions]

{{{

@ZMatch(value="/helloworld", parameters={"message"})
public class HelloWorldAction {
  //parameter "message"
  String message;
  
  //do your work here
  public void after() throws Exception {
    HelloWorldView view = new HelloWorldView(message); 
    ZTemplates.getServletService().render(view);
  }
}

}}}


!!!Next steps
* Read the [Documentation]
* Take a look at the short [examples and tutorials|Tutorial] that show step by step how to create your first ztemplates application. You will touch the main concepts of ztemplates.
* For latest developments go to the [changelog]


!!! About the author

ztemplates is written and maintained by [Gerd Ziegler|http://www.gerdziegler.de], a freelance Java Software pro from the Munich/Germany area. 

If you need consulting or on-site training please [follow this link to get my contact data|http://gerdziegler.de/impressum.html].