2. 在WEB-INF下新建文件夹templates 在templates下新建test.ftl文件
内容为:
<html>
<head> <title>Hello Word</title> </head>
<body>
<h3>${message},${name}</h3>
</body>
</html>
3. 新建Servlet,内容如下:
package com.njy.freemarker.servlet;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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;
public class HelloFreeMarker extends HttpServlet {
public HelloFreeMarker() {
super();
}
//负责管理FreeMarker模板的Configuration实例
private Configuration cfg = null;
public void init() throws ServletException {
//创建一个FreeMarker实例
cfg = new Configuration();
//指定FreeMarker模板文件的位置
cfg.setServletContextForTemplateLoading(getServletContext(),"/WEB-INF/templates");
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//建立数据模型
Map root = new HashMap();
root.put("message", "hello world");
root.put("name", "聂靖宇");
root.put("personList", list);
//获取模板文件
Template t = cfg.getTemplate("test.ftl");
//开始准备生成输出
//- 使用模板文件的Charset作为本页面的charset
//- 使用text/html MIME-type
response.setContentType("text/html; charset=" + t.getEncoding());
Writer out = response.getWriter();
//合并数据模型和模板,并将结果输出到out中
try {
t.process(root, out); // 往模板里写数据
} catch (TemplateException e) {
e.printStackTrace();
}
}
public void destroy() {
super.destroy();
}
}
4web.xml中配置servlet
<servlet>
<servlet-name>HelloFreeMarker</servlet-name>
<servlet-class>com.njy.freemarker.servlet.HelloFreeMarker</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloFreeMarker</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
5. 运行http://localhost:8080/freemarkerTest/hello,页面效果如下如所示:
hello world,聂靖宇
其实就是ftl页面只是一个试卷,而其支持的servlet其实唯一的作用就是答题。