HelloSerevlet.java
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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;
@WebServlet("/HelloSerevlet")
public class HelloSerevlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
private Configuration cfg;
public HelloSerevlet()
{
super();
}
public void init() throws ServletException
{
super.init();
cfg = new Configuration();
//加载自己创建的模版目录
//相对路径相对于项目
cfg.setServletContextForTemplateLoading(this.getServletContext(), "WEB-INF/templates");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//创建数据模型(树状结构)
Map<String,Object> root = new HashMap<String,Object>();
root.put("message", "Hello World");
//加载模版文件
Template t = cfg.getTemplate("test.ftl");
//准备HTTP响应
//使用模板字符的输出
//使用 text/html MIME-type
response.setContentType("text/html; charset="+t.getEncoding());
Writer out = response.getWriter();
try
{
t.process(root, out);
out.flush();
out.close();
}
catch (TemplateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
}
}
templates\test.ftl
<html>
<head>
<title>FreeMarker Example Web Application</title>
</head>
<body>
${message}
</body>
</html>