freemaker开发

推荐书籍 百度云盘 密码: c3m9

1. 前言

本书为<FreeMarker 2.3.19 中文版手册>,包含了freemarker开发得方方面面,可以作为开发freemarker的字典书籍,当然总共两百多页,也可以耐下心来慢慢看.

个人认为在开发的过程使用freemarker可以更好的统一前端,做到很好的代码复用

2. 开发所需环境

目前只需要相应jar包以及jdk环境 jar 密码: pyz2

2.1. java中直接使用模板开发

目录结构

输入图片说明

component.ftl 主要用于测试自定义指令,hello.ftl为进入模板,footer.ftl用于测试include包含指令.话补多少,直接贴代码.(详细操作可以参考书籍)

    public static void main(String[] args) throws IOException, TemplateException {
		//创建Freemarker配置实例
		Configuration cfg = new Configuration();
		cfg.setDirectoryForTemplateLoading(new File("src/templates")); 
		//创建数据模型
		Map<String,Object> root = new HashMap<String,Object>();
		root.put("user1", "hsm");
		root.put("user2", "xiaoming");
		
		List<String> lists=new ArrayList<String>();
		lists.add("xiaohua");
		lists.add("xiaohong");
		lists.add("miss");
		root.put("lists",lists);
		//加载模板文件
		Template t1 = cfg.getTemplate("hello.ftl");
		//显示生成的数据,//将合并后的数据打印到控制台
		Writer out = new OutputStreamWriter(System.out); 
		t1.process(root, out);
		out.flush();
	}

2.2 web中使用使其前端开发引擎

目录结构

输入图片说明

其他其实和一般的web工程类似,主要看Servlet的内容是如何解析的

package com.hsm;

import java.io.IOException;
import java.io.PrintWriter;
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;
/**
 * @author hsm
 * freemarker解析
 */
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private Configuration cfg;
    public HelloServlet() {
        super();
    }
    public void init() {  
        //初始化FreeMarker配置  
        //创建一个Configuration实例  
        cfg =new Configuration();  
        //设置FreeMarker的模版文件位置  
        cfg.setServletContextForTemplateLoading(getServletContext(),"WEB-INF/ftl");  
    }  
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 //建立数据模型  
	       Map<String, String> map =new HashMap<String, String>();  
	       //放入对应数据key value  
	       map.put("user","Zheng");  
	       //取得模版文件  
	       Template t =cfg.getTemplate("hello.ftl");  
	       //开始准备生成输出  
	       //使用模版文件的charset作为本页面的charset  
	       //使用text/html MIME-type  
	       response.setContentType("text/html; charset=" + t.getEncoding());  
	       PrintWriter out = response.getWriter();  
	       //合并数据模型和模版,并将结果输出到out中  
	       try {  
	           t.process(map,out);//用模板来开发servlet可以只在代码里面加入动态的数据  
	       } catch(TemplateException e) {  
	           throw new ServletException("处理Template模版中出现错误", e);  
	       }  
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

2.3 使用spring mvc配置freemarker解析器

推荐博客
大体知识相同,主要是配置spring mvc的视图解析器

后续更新.....
posted @ 2017-10-01 12:36  雾里看花的少年  阅读(265)  评论(0编辑  收藏  举报