Freemarker由浅入深01-环境搭建、测试
来源:互联网 发布:java ee tag标签文件 编辑:程序博客网 时间:2024/06/03 22:59
- Freemarker是什么?
FreeMarker 是一款模板引擎:即一种基于模板、用来生成输出文本(任何来自于 HTML格式的文本用来自动生成源代码)的通用工具。它是为 Java 程序员提供的一个开发包,或者说是一个类库。
FreeMarker 不是 Web 开发的应用程序框架。它是一个适用于 Web 应用程序框架中的组件,但是 FreeMarker 引擎本身并不知道 HTTP 协议或 Java Servlet 的存在。它仅仅来生成文本内容。 - Freemarker能做什么?
使用 FreeMarker 作为视图层的组件,是为了给诸如 Struts 这样的 Model 2 应用框架提供现成的解决方案。比如代替Jsp,生成静态的Html等等; - 如何获取Freemarker资源包以及说明书?
Freemarker 目前最新2.3.20Jar包下载地址:http://jaist.dl.sourceforge.net/project/freemarker/freemarker/2.3.20/freemarker-2.3.20.tar.gz
Freemarker 中文说明书下载地址: http://nchc.dl.sourceforge.net/project/freemarker/chinese-manual/FreeMarker_Manual_zh_CN.pdf - 搭建简易Demo
(1)这里我使用maven来构建,pom.xml如下;如果使用传统的Eclipse Project,请将下载到的jar包加到lib下去;<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.wxp.freemarker</groupId> <artifactId>freemarker01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>freemarker01</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <!-- Freemarker --> <dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.20</version></dependency> </dependencies></project>
(2)接下来,我们来创建Freemarker根据数据和模型生成Html页面的工具类package org.wxp.freemarker;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.Map;import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;public class FreemarkerUtil {public Template getTemplate(String name) {Template temp = null;try {// 通过Freemarker的Configuration读取相应的FtlConfiguration cfg = new Configuration();// 设定去哪里读取相应的ftl模板cfg.setClassForTemplateLoading(this.getClass(), "/ftl");// 在模板文件目录中寻找名称为name的模板文件temp = cfg.getTemplate(name);} catch (IOException e) {e.printStackTrace();}return temp;}/** * 控制台输出文件内容 * @param name * @param rootMap */public void print(String name, Map<String, Object> rootMap) {try {// 通过Template类可以将模板文件输出到相应的文件Template temp = this.getTemplate(name);temp.process(rootMap, new PrintWriter(System.out));} catch (TemplateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/** * 将替换后的模板内容输出到文件 * @param name * @param rootMap * @param outFile */public void fprint(String name, Map<String, Object> rootMap, String outFile) {FileWriter out = null;try {out = new FileWriter(new File("D:\\freemarker\\ftl\\html\\"+ outFile));Template template = this.getTemplate(name);template.process(rootMap, out);} catch (TemplateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (null != out)try {out.close();} catch (IOException e) {e.printStackTrace();}}}}
(3)然后,来创建Freemarker的模板文件,名为01.ftl;(其实可以看到,也就是在ftl文件中写html,除过Freemarker自己的标签)<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>你好,${username}</body></html>
(4)最后,来写一个测试类;package org.wxp.freemarker;import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import org.junit.Before;import org.junit.Test;import org.wxp.freemarker.model.User;public class TestFreemarker {private FreemarkerUtil freemarkerUtil;private Map<String, Object> rootMap = null;@Beforepublic void setUp() {freemarkerUtil = new FreemarkerUtil();rootMap = new HashMap<String, Object>();}@Testpublic void test01() {// 填充数据rootMap.put("username", "王三毛");// 打印到控制台freemarkerUtil.print("01.ftl", rootMap);// 输出到文件freemarkerUtil.fprint("01.ftl", rootMap, "01.html");}}
(5)来看看生成的Html文件;<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>你好,王三毛</body></html>
浏览器展示效果如下:
2 0
- Freemarker由浅入深01-环境搭建、测试
- Freemarker由浅入深01-环境搭建、测试
- FreeMarker 由浅入深二 FreeMarker开发环境搭建
- 自己搭建freemarker环境和测试代码
- ActiveMQ 由浅入深之一(开发环境搭建)
- 静态化环境搭建Freemarker
- 01 Android测试环境搭建
- redis 由浅入深之 简介和开发环境搭建
- FreeMarker由浅入深之一 FreeMarker简单介绍
- spring mvc+freemarker 简单环境的搭建
- 基于注解的SPRINGMVC+FREEMARKER环境搭建
- 基于注解的SPRINGMVC+FREEMARKER环境搭建
- 基于注解的SPRINGMVC+FREEMARKER环境搭建
- 基于注解的SPRINGMVC+FREEMARKER环境搭建
- 基于注解的SpringMVC+freemarker环境搭建
- 基于注解的SPRINGMVC+FREEMARKER环境搭建
- 基于注解的SPRINGMVC+FREEMARKER环境搭建
- 基于注解的SpringMVC+freemarker环境搭建
- 老鸟的Python入门教程
- 关于表空间及数据文件的offline与online
- 解决SecureCRT中文版“数据库里没找到防火墙‘无’”的错误提示
- Windows 7\Windows 8\Windows 2008 配置DB2客户端 CCA3054N 问题解决办法
- git 服务器以及ssh密钥公钥
- Freemarker由浅入深01-环境搭建、测试
- cocoapod 使用
- JS取整
- mysql 数据库dump ----python之mysqldump
- java 1.5新特性
- Oracle导出 DMP 方法
- document节点对象的获取方式
- CART算法实现之可视化
- Souliss – 分布式家庭自动化和物联网