Stiu ca alegerea multora este Velocity, dar dupa o zi de documentare si nervi, nu am reusit sa fac functionala o pagina
. Asa ca am ales a doua alternativa care este mai “tanara” dar mai buna. Va prezint in continuare o aplicatie web care foloseste Free Marker. Un “Hello world!” cred ca e suficient pt inceput. Gasiti aici si documentatia pentru lucruri mai avansate
.
Mai intai terbuie sa luati sursele pentru Free Marker. Spre deosebire de Velocity acesta are un singur jar.
Faceti un proiect web simplu. Creati un servlet, eu l-am denumit “FMServlet”. Codul acestiua ar terbui sa fie cam asa:
package fm;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FMServlet extends HttpServlet {
private Configuration cfg;
public void init() {
cfg = new Configuration();
//specificati locul de unse se vor incarca template-urile
cfg.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/template");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Construiti un model
Map root = new HashMap();
root.put("message", "Hello World!");
// Puneti mana protected template
Template t = cfg.getTemplate("test.ftl");
//Pregatiti raspunsul
response.setContentType("text/html; charset=" + t.getEncoding());
Writer out = response.getWriter();
// Uniti medelul cu template-ul, si apoi il scrieti in response
try {
t.process(root, out);
} catch (TemplateException e) {
throw new ServletException(
"Error while processing FreeMarker template", e);
}
}
}
Continutul templatului este umratorul:
<html>
<head>
<title>Primul exemplu de template cu FreeMarker</title>
</head>
<body>
Servletul va transmite: ${message}
</body>
</html>
Din pagina index.jsp apelz servletul care imi intoarce templatul impreuna cu datele.
Cam atat de simplu este. Evident o sa pun si niste poze cu structura aplicatiei pentru a avea un context in care stau aceste 2 fisiere:
Structura aplicatiei:

A se observa locatia templatului
Locatia servletului
Faptul ca am inclus jarul freemarker
Spor la cod.

