博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11(maven+SSH)网上商城项目实战之Freemarker 页面静态化
阅读量:6489 次
发布时间:2019-06-24

本文共 2502 字,大约阅读时间需要 8 分钟。

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 

l         FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 

l         虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)

模板 + 数据模型 = 输出

l         FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 

l         FreeMarker与容器无关,因为它并不知道HTTPServletFreeMarker同样可以应用于非Web应用程序环境 

l         FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 

l         FreeMarker是免费的 

(1)实例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package 
freemaker;
import 
java.io.File;
import 
java.io.FileWriter;
import 
java.io.Writer;
import 
java.util.HashMap;
import 
java.util.Map;
import 
freemarker.template.Configuration;
import 
freemarker.template.Template;
public 
class 
FreeMarkerDemo {
    
public 
static 
void 
main(String[] args) {
        
// 配置对象 .html
        
Configuration conf = 
new 
Configuration();
        
// 模板路径
        
String dir = 
"D:\\workspace2\\freemaker\\ftl\\"
;
        
try 
{
            
// 导入模板目录
            
conf.setDirectoryForTemplateLoading(
new 
File(dir));
            
// 获取模板
            
Template template = conf.getTemplate(
"freemaker.html"
);
            
// 数据
            
Map root = 
new 
HashMap();
            
root.put(
"world"
"世界"
);
            
// 输出流
            
Writer out = 
new 
FileWriter(
new 
File(dir + 
"hello.html"
));
            
// 生成开始
            
template.process(root, out);
            
out.flush();
            
out.close();
        
catch 
(Exception e) {
            
e.printStackTrace();
        
}
        
System.out.println(
"生成完毕"
);
    
}
}

(2)返回对象

         

1
2
3
4
5
6
7
           
Person p = 
new 
Person();
            
p.setId(
9527
);
            
p.setName(
"华安"
);
            
root.put(
"per"
, p);
     
            
编号:${per.id}<br/>
            
姓名:${per.name}<br/>

(3)遍历List

   

1
2
3
4
5
6
7
8
9
10
11
         
List<Person> list = 
new 
ArrayList<Person>();
            
for
(
int 
i =
0
;i<
10
;i++){
                
Person p = 
new 
Person();
                
p.setId(
9527
+i);
                
p.setName(
"华安"
+i);
                
list.add(p);
            
}
            
root.put(
"list"
, list);
            
<#list list as p>
                
${p.id} -- ${p.name}
            
</#list>

(4)遍历Map

     

1
2
3
4
5
6
7
           
Map map = new HashMap();
            
map.put("id", "1001");
            
map.put("name", "秋香");
            
root.put("map", map);
            
<#list map?keys as key>
                
${map[key]}
            
</#list>

(5)遍历List<Map>

   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            
Map map = 
new 
HashMap();
            
map.put(
"id"
"1001"
);
            
map.put(
"name"
"秋香"
);
            
Map map2 = 
new 
HashMap();
            
map2.put(
"id"
"1002"
);
            
map2.put(
"name"
"石榴姐"
);
            
List<Map> maplist = 
new 
ArrayList<Map>();
            
maplist.add(map);
            
maplist.add(map2);
            
root.put(
"maplist"
, maplist);
             
            
<#list maplist as map>
                
<#list map?keys as key>
                    
${map[key]}
                
</#list>
           
</#list>

(6)遍历if else

 

1
2
3
4
5
6
7
  
<#list ["星期一","星期二","星期三"] as n>
    
<#if n!="星期一">
        
${n}
    
<#else>
        
您好今天是星期一
    
</#if>
</#list>

(7)时间处理

1
2
3
    
root.put("dt", new Date());
    
年月时间:${dt?datetime}<
br
/>
    
时间:${dt?time}

本文转自 l363130002 51CTO博客,原文链接:http://blog.51cto.com/liuyj/1714711

转载地址:http://rdouo.baihongyu.com/

你可能感兴趣的文章
SpringFlux入门(上篇)
查看>>
Bean注解方式知识点1
查看>>
centos7 hive 单机模式安装配置
查看>>
记一次小白在centos下安装nginx
查看>>
swift unowned和weak的使用
查看>>
面向对象设计原则
查看>>
异步编程 101: 是什么、小试Python asyncio
查看>>
10月12日云栖精选夜读:【直击2017杭州·云栖大会】TECH INSIGHT企业迁云实战专场...
查看>>
html中在线预览pdf文件之pdf在线预览插件
查看>>
MongoDB入门篇
查看>>
Java 集合08之 ListLinkedList, ArrayList等使用场景和性能分析
查看>>
短期怎么学会云计算?新手学习云计算的规划
查看>>
支配vue框架之模版语法 v-html
查看>>
英伟达发布超强大新型芯片用于人工智能
查看>>
以太坊社区激励金计划:支持开发者利用去中心化技术改变世界
查看>>
详细精确阐述jsBridge执行流程的文章
查看>>
并发编程导论
查看>>
使用AndroidX + ViewModel + LiveData + DataBinding等组件搭建的MVVM快速开发框架
查看>>
[译] 关于 React Router 4 的一切
查看>>
Python虚拟环境指南2019版
查看>>