静态化模板Freemaker的基本语法

首先,导入jar包

freemark的demo类:

 1 public class FMDemo {
 2
 3     //实例化Freemarker  配置类   ftl freemarker templet
 4     // .java  .html  .jsp .xml
 5     // .ftl .txt
 6     //dao bean xml service controller .jsp
 7     public static void main(String[] args) throws IOException, TemplateException {
 8         //模板 +  数据模型 = 输出
 9         Configuration  conf = new Configuration();
10         //告诉conf 类  模板放在哪里
11         String dir = "C:\\Users\\cuibin\\workspace-juno\\freemarker\\ftl\\";
12         // 模板放在哪里
13         conf.setDirectoryForTemplateLoading(new File(dir));
14         //模板对象
15         Template template = conf.getTemplate("freemarker.html");
16         //数据
17         Map root = new HashMap();
18         root.put("world", "世界你好");
19         //1
20         Person person = new Person();
21         person.setId(1);
22         person.setName("薪水");
23         root.put("person", person);
24         //2 List
25         List<String> persons = new ArrayList<String>();
26         persons.add("范冰冰");
27         persons.add("李冰冰");
28         persons.add("何灵");
29         root.put("persons", persons);
30         //3 Map
31         Map mx = new HashMap();
32         mx.put("fbb","范冰冰");
33         mx.put("lbb","李冰冰");
34         root.put("mx",mx);
35         //4: List<Map>
36
37         List<Map> maps = new ArrayList<Map>();
38         Map pms1 = new HashMap();
39         pms1.put("id1", "范冰冰");
40         pms1.put("id2", "李冰冰");
41         Map pms2 = new HashMap();
42         pms2.put("id1", "曾志伟");
43         pms2.put("id2", "何炅");
44         maps.add(pms1);
45         maps.add(pms2);
46         root.put("maps", maps);
47
48         //时间
49         root.put("cur_time", new Date());
50         //null
51         root.put("val",null);
52
53
54
55         //输出流  最终成文件
56         Writer out = new FileWriter(new File(dir + "hello.html"));
57
58         template.process(root, out);
59
60         System.out.println("生成完毕!");
61
62     }
63 }

模板页freemaker.html:

  1 <html>
  2 <head>
  3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4 <title>Insert title here</title>
  5 </head>
  6 <body>
  7 ${world} <br/>
  8
  9 ${person.id}/${person.name} <br/>
 10
 11         <!--
 12         List<String> persons = new ArrayList<String>();
 13         persons.add("范冰冰");
 14         persons.add("李冰冰");
 15         persons.add("何灵");
 16         root.put("persons", persons); --><br/>
 17
 18 <#list persons as person>
 19     ${person}
 20 </#list> <br/>
 21
 22 <!--     Map mx = new HashMap();
 23         mx.put("fbb","范冰冰");
 24         mx.put("lbb","李冰冰");
 25         root.put("mx",mx); -->
 26 <#list mx?keys as key>
 27     ${mx[key]}
 28 </#list> <br/>
 29
 30 ${mx.fbb}/${mx.lbb} <br/>
 31
 32 <!--     List<Map> maps = new ArrayList<Map>();
 33         Map pms1 = new HashMap();
 34         pms1.put("id1", "范冰冰");
 35         pms1.put("id2", "李冰冰");
 36         Map pms2 = new HashMap();
 37         pms2.put("id1", "曾志伟");
 38         pms2.put("id2", "何炅");
 39         maps.add(pms1);
 40         maps.add(pms2);
 41         root.put("maps", maps); -->
 42 <#list maps as map >
 43     <#list map?keys as key>
 44         ${map[key]}
 45     </#list>
 46 </#list>        <br>
 47 <#list maps as map >
 48     ${map.id1}/${map.id2}
 49 </#list>
 50 <br/>
 51
 52 <#list persons as p>
 53     ${p_index}
 54 </#list>
 55
 56 <input type="hidden" value="${world}">
 57     <#assign x=‘${world}‘ />
 58         ${x}
 59
 60     <#assign x>世界太好了</#assign>
 61         ${x}
 62
 63     <#assign x>
 64        <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
 65           ${n}
 66        </#list>
 67     </#assign>
 68        ${x}<br/>
 69
 70      <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
 71         <#if n != "星期一">
 72                ${n}
 73         </#if>
 74     </#list>
 75      <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
 76         <#if n_index != 0>
 77            ${n}
 78         </#if>
 79     </#list><br/>
 80
 81     <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
 82         <#if (n_index == 1) || (n_index == 3)>
 83            ${n}
 84         </#if>
 85     </#list><br/>
 86
 87     <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>
 88         <#if (n_index == 1) || (n_index == 3)>
 89             ${n} --红色
 90         <#else>
 91             ${n} --绿色
 92         </#if>
 93     </#list><br/>
 94
 95     ${cur_time?datetime}<br/>
 96
 97     ${val!}
 98
 99     <!-- 分页 -->
100     <#macro table pageNo>
101         ${pageNo}
102         如果是每一页 <Strong>1</Strong>
103         ...
104     </#macro>
105 <@table pageNo=8 /><br/>
106
107     <#macro table u>
108            ${u}
109         <#nested/>
110     </#macro>
111 <@table u=8 >这是8</@table>
112
113
114
115
116
117
118
119
120
121
122 </body>
123 

执行demo的main方法生成输出页:

  1 <html>
  2 <head>
  3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4 <title>Insert title here</title>
  5 </head>
  6 <body>
  7 世界你好 <br/>
  8
  9 1/薪水 <br/>
 10
 11         <!--
 12         List<String> persons = new ArrayList<String>();
 13         persons.add("范冰冰");
 14         persons.add("李冰冰");
 15         persons.add("何灵");
 16         root.put("persons", persons); --><br/>
 17
 18     范冰冰
 19     李冰冰
 20     何灵
 21  <br/>
 22
 23 <!--     Map mx = new HashMap();
 24         mx.put("fbb","范冰冰");
 25         mx.put("lbb","李冰冰");
 26         root.put("mx",mx); -->
 27     李冰冰
 28     范冰冰
 29  <br/>
 30
 31 范冰冰/李冰冰 <br/>
 32
 33 <!--     List<Map> maps = new ArrayList<Map>();
 34         Map pms1 = new HashMap();
 35         pms1.put("id1", "范冰冰");
 36         pms1.put("id2", "李冰冰");
 37         Map pms2 = new HashMap();
 38         pms2.put("id1", "曾志伟");
 39         pms2.put("id2", "何炅");
 40         maps.add(pms1);
 41         maps.add(pms2);
 42         root.put("maps", maps); -->
 43         李冰冰
 44         范冰冰
 45         何炅
 46         曾志伟
 47         <br>
 48     范冰冰/李冰冰
 49     曾志伟/何炅
 50 <br/>
 51
 52     0
 53     1
 54     2
 55
 56 <input type="hidden" value="世界你好">
 57         世界你好
 58
 59         世界太好了
 60
 61                  星期一
 62           星期二
 63           星期三
 64           星期四
 65           星期五
 66           星期六
 67           星期天
 68 <br/>
 69
 70                星期二
 71                星期三
 72                星期四
 73                星期五
 74                星期六
 75                星期天
 76                星期二
 77                星期三
 78                星期四
 79                星期五
 80                星期六
 81                星期天
 82     <br/>
 83
 84                星期二
 85                    星期四
 86                 <br/>
 87
 88             星期一 --绿色
 89                 星期二 --红色
 90                 星期三 --绿色
 91                 星期四 --红色
 92                 星期五 --绿色
 93                 星期六 --绿色
 94                 星期天 --绿色
 95     <br/>
 96
 97     2015-5-11 15:39:02<br/>
 98
 99
100
101     <!-- 分页 -->
102         8
103         如果是每一页 <Strong>1</Strong>
104         ...
105 <br/>
106
107            8
108 这是8
109
110
111
112
113
114
115
116
117
118
119 </body>
120 </html>
时间: 2024-10-31 03:09:52

静态化模板Freemaker的基本语法的相关文章

大数据学习总结记录—页面静态化技术(Freemarker/velocity)&amp; 网站伪静态(UrlRewriteFilter)

Freemaker  静态化模板技术 模板的作用 模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选择使用freemarker或velocity作为view,模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成servlet,那么这个过程是很慢的,当然很多应用服务器都提供预编译的功能,但是在开

Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则.强大的功能.高效的渲染效率.详尽的帮助说明与不断的更新与维护.常见的前端模板引擎有: 常用的java后台模板引擎:jsp.FreeMarker.Velocity等. 请不要迷恋速度,为了推广的测试可能是片面的,好的模板引擎经得起时间考验,建议大家选择成熟的.常用的模板引擎.另外不管前后端的模板引擎

网页静态化解决方案-Freemarker demo+语法

1.网页静态化技术Freemarker 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信息,这样的情况同样也适用于使用网页静态化来解决. 网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数据,而网页静态化比较适合大规模且相对变化不太频繁的数据.另外网页静态化还有利于SEO. 另外我们如果将

Asp.net动态页面静态化之初始NVelocity模板引擎

Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含"?"."="."&"等特殊符号. 静态页面不能自主管理公布更新的页面,假设想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件改动(通过fso等技术例外) 常见的静态页面举例:.html扩展名的..htm扩展名的. 注意:静态页面并

dede模板教程:如何设置dede的静态化或者动态化?

直接用DEDE后台的SQL命令行工具, SQL语句: DEDE整站动态化: 将所有文档设置为"仅动态", update dede_archives set ismake=-1 将所有栏目设置为"使用动态页", update dede_arctype set isdefault=-1 DEDE整站静态化: 将所有文档设置为"生成HTML", update dede_archives set ismake=1 将所有栏目设置为"链接到默认页

freecms首页静态化以及模板标签

首页静态化代码: 在freeCMS的后台进行首页静态化时,首先会调用cn.freeteam.cms.action.HtmlAction里的indexDo方法,以下是代码: 很明显这里会用到siteService里的html方法: 在这里需要几个参数放到data里:site对象,contextpath--系统根路径,contextpathno--系统根路径不带最后一个“/”, 这些准备好后将context,data,以及模板路径.站点路径发送到createhtml方法, 在这里说一下模板路径以及站

java自适应响应式 企业网站源码 SSM freemaker生成静态化 手机 平板 PC springmvc

java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 前台: 支持两套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以访问速度快,轻便,对服务器负担小 3.网站前端采用主流的响应式布局,同一页面同时支持PC.平板.手机(三合一)浏览器访问 4.springmvc +spring4.2.5+ mybaits3.3  SSM 普通java we

Freecms模板的制作与静态化 (3)

这里简单说一下文章页的静态化. FreeCMS用的是ckEditor编辑文章,编辑得到的东西和标题等信息,一并存到freecms_info这张表中. 每个文章都有对应的栏目,多数栏目,都有相应的模版文件,这些东西,存在freecms_channel这张表中. 文章页静态化的时候,通过info查找到channel,然后对应相关的template,插入数据后,把静态化的页面存到相应的文件夹中.文件的路径不支持别名等,暂时的命名方法是 /栏目/info/年份/文章号.html.如果想自己做别名,需要改

网页静态化—redis | freemarker

1.   学习计划 1.商品详情页面展示,动态展示 jsp + redis 2.使用freemarker实现网页静态化 3.ActiveMq同步生成静态网页 两个方案对比,方案一依赖web容器,redis的引入确实是减轻了数据库的压力,却也有明显的不足,撇开缓存的上限不说,方案一中web容器还是会去编辑和解析jsp页面,从缓存中拿数据,生成html返回给客户端:而方案二完全脱离web容器,不仅减轻了数据库的压力,也减轻了web容器的压力,性能更加优越. 下面分别演示这两种解决方案.这里对搭建工程