初步学习freemarker ,先做一个简单的HelloWord程序!
新建一个WEB工程,下载(我使用的是freemarker-2.3.20)freemarker并导入freemarker.jar,在WEB-INF下新建文件夹templates用于存放模版文件
在templates下新建test.ftl,这是示例模版文件。内容就是HTML内容,里面带有一个标记符,用于将来进行变量替换,内容如下:
freemarker测试 ${message},${name}
新建一个Servlet,用于请求设置变量,并处理模版的输出:
1 package com.test.servlet; 2 import java.io.IOException; 3 import java.io.Writer; 4 import java.util.HashMap; 5 import java.util.Map; 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 import freemarker.template.Configuration;11 import freemarker.template.Template;12 import freemarker.template.TemplateException;13 @SuppressWarnings("serial")14 public class HelloFreeMarkerServlet extends HttpServlet {15 // 负责管理FreeMarker模板的Configuration实例16 private Configuration cfg = null;17 public void init() throws ServletException {18 // 创建一个FreeMarker实例19 cfg = new Configuration();20 // 指定FreeMarker模板文件的位置21 cfg.setServletContextForTemplateLoading(getServletContext(),22 "/WEB-INF/templates");23 }24 @SuppressWarnings("unchecked")25 public void doPost(HttpServletRequest request, HttpServletResponse response)26 throws ServletException, IOException {27 // 建立数据模型28 Map root = new HashMap();29 root.put("message", "hello world");30 root.put("name", "java小强");31 // 获取模板文件32 Template t = cfg.getTemplate("test.ftl");33 // 使用模板文件的Charset作为本页面的charset34 // 使用text/html MIME-type35 response.setContentType("text/html; charset=" + t.getEncoding());36 Writer out = response.getWriter();37 // 合并数据模型和模板,并将结果输出到out中38 try {39 t.process(root, out); // 往模板里写数据40 } catch (TemplateException e) {41 e.printStackTrace();42 }43 }44 public void doGet(HttpServletRequest request, HttpServletResponse response)45 throws ServletException, IOException {46 doPost(request, response);47 }48 public void destroy() {49 super.destroy();50 }51 }
注意要在你的web.xml中配置该Servlet:
1 26 7 12hello 89 com.test.servlet.HelloFreeMarkerServlet10 1113 16hello 14/hello 1517 19index.jsp 18
为了方便测试,访问工程直接跳转到Servlet,对主页index.jsp做一个简单修改:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> <% String mypath = "hello"; response.sendRedirect(basePath + mypath); %>
部署工程到Tomcat,启动并访问xx。