FreeMarker模板引擎

£可爱£侵袭症+ 提交于 2020-01-30 01:50:28

FreeMarker模板引擎

第1章 FreeMarker快速入门

1-1 模板引擎与FreeMarker

什么是模板引擎
模板引擎的目标是”数据+模板=结果”
模板引擎将数据与展现有效”解耦"
主流模板引擎:JSP、Freemarker、Beetl
在这里插入图片描述
在这里插入图片描述

1-2 Freemarker快速上手

FreeMarker的执行步骤:
1、加载模板
Configuration config=new Configurarion(Configurarion.VERSION_2_3_28(FreeMarker的版本号));(创建核心配置对象)
//设置加载目录
config.setClassForTemplateLoading(FreemarkerSample1.class,"")(在类FreemarkerSample1所在的包中加载指定文件,“”代表当前包)
//得到模板对象
Template t=config.getTemplate(“sample1.ftl”);

2、创建数据
Map<String,Object> data=new HashMap<>();
data.put(“site”,“百度”);
data.put(“url”,“http://www.baidu.com”);
3、产生输出
t.process(data,new OutputStreamWriter(System.out)(将System.out从字节流转换为字符流));
在这里插入图片描述

import freemarker.template.TemplateNotFoundException;

public class FreemarkerSample1 {

	public static void main(String[] args) throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException, TemplateException {
		//1. 加载模板
		//创建核心配置对象
		Configuration config = new Configuration(Configuration.VERSION_2_3_28);
		//设置加载的目录
		config.setClassForTemplateLoading(FreemarkerSample1.class, "");
		//得到模板对象
		Template t = config.getTemplate("sample1.ftl");
		//2. 创建数据
		Map<String,Object> data = new HashMap<String,Object>();
		data.put("site", "新浪");
		data.put("url", "http://www.sina.com");
		data.put("date", new Date());
		data.put("number", 837183.883217);
		Map info = new HashMap();
		info.put("cpu", "i5");
		Computer c1 = new Computer("1234567" , "ThinkPad" , 1 , "李四" , new Date() , 12900f , info);
		data.put("computer", c1);
		//3. 产生输出
		t.process(data, new OutputStreamWriter(System.out));
	}
}

<#-- Freemarker取值 -->
${site}
${url}
<#-- !默认值 -->
${author!"不存在的属性"}
<#-- ?string格式化输出 -->
${date?string("yyyy年MM月dd日 HH:mm:ss SSS")}
${number?string("0.00")}
<#if computer.sn == "1234567">
重要设备
</#if>
SN:${computer.sn}
型号:${computer.model}
<#if computer.state == 1>
状态:正在使用
<#elseif computer.state == 2>
状态:闲置
<#elseif computer.state == 3>
状态:已作废
</#if>

<#switch computer.state>
	<#case 1>
		状态:正在使用
		<#break>
	<#case 2>
		状态:闲置
		<#break>
	<#case 3>
		状态:已作废
		<#break>
	<#default>
		状态:无效状态
</#switch>
<#-- ??代表判断对象是否为空,true不为空,false为空 -->
<#if computer.user??>
用户:${computer.user}
</#if>
采购时间:${computer.dop?string("yyyy年MM月dd日")}
采购价格:${computer.price?string("0.00")}
配置信息:
--------------
CPU:${computer.info["cpu"]}
内存:${computer.info["memory"]!"无内存信息"}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!