11(maven+SSH)网上商城项目实战之Freemarker 页面静态化-阿里云开发者社区

开发者社区> 科技小能手> 正文

11(maven+SSH)网上商城项目实战之Freemarker 页面静态化

简介:
+关注继续查看

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

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

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

模板 + 数据模型 = 输出

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}





附件:http://down.51cto.com/data/2367126


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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SSH 网站制作之AJAX无刷新动态更新页面
  在做网页时,经常需要根据用户输入信息,进行“局部页面的刷新”也就是要使用所谓的AJAX技术。最近正好也在用,就总结一下。   1.AJAX介绍       AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。
916 0
Scroll Depth – 衡量页面滚动的 Google 分析插件
  Scroll Depth 是一个小型的 Google Analytics(谷歌分析)插件,可以让你衡量用户在页面上滚动了多远。它可以监控 25%、50%、75% 和 100% 四个滚动点,并发送谷歌分析事件。
684 0
一不小心,它成为了 GitHub Alibaba Group 下 Star 最多的开源项目
随着微服务的流行,应用更加轻量和高效,但是带来的困境是线上问题排查越来越复杂困难。传统的 Java 排查问题,需要重启应用再进行调试,但是重启应用之后现场会丢失,问题难以复现。
815 0
Github Daily - Taro 实战网易云音乐项目
嗨,我是 `Martin`,也叫老王。今天推荐一个 `React` 实战项目,使用的是京东的 `Taro` 框架。
193 0
怎么将aspx网站改为静态页面?
首先思路是在后台点击“生成静态页面” 转换为静态页面 protected void Button2_Click(object sender, EventArgs e) { DataSet ds = Getyuqian().
1426 0
14426
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载