FreeMarker是开源的模板框架
主页:http://www.freemarker.org/
现在我们就开始我们的FreeMarker版的Hello World之旅吧。
1.下载 最新的freemarker jar包
FreeMarkerhttp://cznic.dl.sourceforge.net/project/freemarker/freemarker/2.3.20/freemarker-gae-2.3.20.jar
2.解压你下载的freemarker-2.3.20。
3.新建一web工程。我是MyEclipse下做的。把jar文件都导入到你的工程, 并且复制到你建的web工程的lib目录下。
4.在WEB-INF目录下建一文件夹templates,然后在这个文件夹里面新建一个模板文件test.ftl
<
html
>
< head >
< title >你的自定义模板 </ title >
</ head >
< body >
${message}
: < font color =red >${username} </ font >
</ body >
</ html >
< head >
< title >你的自定义模板 </ title >
</ head >
< body >
${message}
: < font color =red >${username} </ font >
</ body >
</ html >
5.建一个HelloServlet:
package com;
import java.io.IOException;
import java.io.PrintWriter;
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;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet
{
private Configuration cfg = null;
@Override
public void init() throws ServletException
{
// FreeMarker程序入口点
cfg = new Configuration();
// 初始化Servlet上下文(第二参数为ServletContext的相对路径,null代表当前网站根路径,相对路径)
cfg.setServletContextForTemplateLoading( this.getServletContext(), null);
/** *********************************************************************
* *cfg.setServletContextForTemplateLoading(this.getServletContext(),
* "WEB-INF"); 如果设置成WEB-INF相应的获模板时需要改成Template t =
* cfg.getTemplate("/templates/test.ftl");
********************************************************************* */
}
@SuppressWarnings("unchecked")
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
// 模板文件会根据key,读取value
Map root = new HashMap();
root.put("message", "您好!");
root.put("username", "编程爱好者");
Template t = cfg.getTemplate("WEB-INF/templates/test.ftl",,"utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
try
{
t.process(root, out);
} catch (TemplateException e)
{
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
}
}
import java.io.IOException;
import java.io.PrintWriter;
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;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet
{
private Configuration cfg = null;
@Override
public void init() throws ServletException
{
// FreeMarker程序入口点
cfg = new Configuration();
// 初始化Servlet上下文(第二参数为ServletContext的相对路径,null代表当前网站根路径,相对路径)
cfg.setServletContextForTemplateLoading( this.getServletContext(), null);
/** *********************************************************************
* *cfg.setServletContextForTemplateLoading(this.getServletContext(),
* "WEB-INF"); 如果设置成WEB-INF相应的获模板时需要改成Template t =
* cfg.getTemplate("/templates/test.ftl");
********************************************************************* */
}
@SuppressWarnings("unchecked")
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
// 模板文件会根据key,读取value
Map root = new HashMap();
root.put("message", "您好!");
root.put("username", "编程爱好者");
Template t = cfg.getTemplate("WEB-INF/templates/test.ftl",,"utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
try
{
t.process(root, out);
} catch (TemplateException e)
{
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
}
}
6.web.xml中的相应配置:
<?
xml version="1.0" encoding="UTF-8"
?>
< web-app version ="2.5" xmlns ="http://java.sun.com/xml/ns/javaee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
< servlet >
< servlet-name >testServlet </ servlet-name >
< servlet-class >com.HelloServlet </ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name >testServlet </ servlet-name >
< url-pattern >/hello </ url-pattern >
</ servlet-mapping >
< welcome-file-list >
< welcome-file >index.jsp </ welcome-file >
</ welcome-file-list >
</ web-app >
< web-app version ="2.5" xmlns ="http://java.sun.com/xml/ns/javaee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
< servlet >
< servlet-name >testServlet </ servlet-name >
< servlet-class >com.HelloServlet </ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name >testServlet </ servlet-name >
< url-pattern >/hello </ url-pattern >
</ servlet-mapping >
< welcome-file-list >
< welcome-file >index.jsp </ welcome-file >
</ welcome-file-list >
</ web-app >
7.启动浏览器访问:http://localhost:8888/freemarker/hello
您会看到:
您好! :编程爱好者
好了,你的第一个Freemarker版的HelloWorld已经成功完成了。
http://www.blogjava.net/supercrsky/articles/205566.html