现在的位置: 首页 > 综合 > 正文

freemarker应用

2013年10月11日 ⁄ 综合 ⁄ 共 1538字 ⁄ 字号 评论关闭

前提条件:

在WEB-INF下建立templates文件夹,存放模板文件

首先建立index.tpl文件

<html>
<body>
${message}
</body>
</html>

下面是加载freemarker进行模板渲染输出

package main;

import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Locale;
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;

/**
 * Servlet implementation class Hello
 */
@WebServlet("/Hello")
public class Hello extends HttpServlet {
	private static final long serialVersionUID = 1L;
    private Configuration cfg = null;
	
    @Override
    public void init(){
    	//初始化freemarker环境
    	cfg = new Configuration();
    	
    	//加载模板
    	cfg.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates");
    	
    	//设置模板更新时间,本地调试时设置为0
    	cfg.setTemplateUpdateDelay(0);
    	
    	//设置默认输出字符集
    	cfg.setOutputEncoding("UTF-8");
    }
    
    public Hello() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Template t = cfg.getTemplate("index.tpl");
		
		response.setContentType("text/html; charset=" + cfg.getOutputEncoding());
		
		Writer out = response.getWriter();
		
		Map root = new HashMap();
		
		root.put("message", "hello world!");
		
		try {
			t.process(root, out);
		} catch (TemplateException e) {
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

抱歉!评论已关闭.