simple template engine for Java servlet

What is it ? - How to use it ? - How to download it ?

 

What is it ?

Jtpl is a template engine for Java Servlet which allows you to store your HTML code apart from your Java code.
A template engine is a software module which is used to generate HTML pages. The layout of a HTML page is defined within a template file, which can be designed by using a standard HTML editor. At run-time, the application program instructs the template engine to load the template, fill in
variable values, repeat blocks and produce the final HTML page.
There are other template engines (like Velocity, WebMacro or Struts) which are huge and use complex syntaxes.
Jtpl however uses a very simple template syntax. All processing (loops, if-then-else logic) and variable formatting is done in the Java code, which leads to better separation of layout and code, and no new complex syntax has to be learned.

 

How to use it ?

Jtpl is extremly simple to use, but if you get any concerns or question just leave a message on the Jtpl General Forum and I will be glad to help you.

A simple syntax is used to define variables and blocks in the template file:

Variables:
{MY_VARIABLE}

 

 

Blocks:

<!-- BEGIN: block_name-->
the content of the block
<!-- END: block_name -->


You can do eveything you want with only 3 methods:
- void assign(String varName, string varData)
- void parse(String blockName)
- String out()



Sample servlet #1 :

sample1.java
package net.sourceforge.jtpl;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class sample1 extends HttpServlet implements SingleThreadModel {
	Jtpl tpl;

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		try {
			out.print(this.generatePage());
		} catch (Exception e) {
			e.printStackTrace(out);
		}
	}

	private String generatePage() throws Exception {
		tpl = new Jtpl("C:\\java\\eclipse\\workspace\\jtpl\\sample1.jtpl");
		tpl.assign("TITLE", "Sample 1");
		tpl.assign("MESSAGE", "Hello World");
		tpl.parse("main");
		return (tpl.out());
	}
}
sample1.jtpl
<!-- BEGIN: main -->
<html>
<head>
<title>{TITLE}</title>
</head>
<body>
{MESSAGE}
</body>
</html>
<!-- END: main -->

 

 

 

 

 

 

 

 


This exemple will print an html page with a "Hello World" message.

 

 

 

 

 

 

 



Sample servlet #2

sample2.java
package net.sourceforge.jtpl;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class sample2 extends HttpServlet implements SingleThreadModel {
	Jtpl tpl;

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		try {
			out.print(this.generatePage());
		} catch (Exception e) {
			e.printStackTrace(out);
		}
	}

	private String generatePage() throws Exception {
		tpl = new Jtpl("C:\\java\\eclipse\\workspace\\jtpl\\sample2.jtpl");
		tpl.assign("TITLE", "Sample 2");
		int line = 10, col = 5, altern = 2, count = 0;
		for (int i = 1; i <= line; i++) {
			for (int j = 1; j <= col; j++) {
				if (count % altern == 0) {
					tpl.assign("BGCOLOR", "#75D2FF");
				} else {
					tpl.assign("BGCOLOR", "#CCEEFF");
				}
				tpl.assign("VARIABLE", "line:" + i + " row:" + j);
				tpl.parse("main.line.row");
				count++;
			}
			tpl.parse("main.line");
		}
		tpl.parse("main");
		return (tpl.out());
	}
}

sample2.jtpl
<!-- BEGIN: main -->
<html>
<head>
<title>{TITLE}</title>
</head>
<body> 
<table> 
  <!-- BEGIN: line --> 
  <tr> 
    <!-- BEGIN: row --> 
    <td bgcolor="{BGCOLOR}">{VARIABLE}</td> 
    <!-- END: row --> 
  </tr> 
  <!-- END: line --> 
</table> 
</body>
</html>
<!-- END: main -->

 

 

 

 

 

 

 

 

 

 

 

This exemple will print this output :

 

 

 

 


How to download it ?

The latest version aviable is Jtpl 1.2, you can download the Jar file on the download page.

If you like Jtpl, please rate it on HotScripts.com

SourceForge.net Logo

Jtpl project lead: Emmanuel Alliel