FreeMarker学习笔记(一)

结合最近在公司用到的FreeMarker 页面静态化及动态生成页面 做一个总结归纳:

首先我们在学习FreeMarker之前我们首先要了解FreeMarker是做什么的?

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

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

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

通俗一点来讲,FreeMarker就是一种基于模板的、用来生成输出文本的通用工具,基于Java的开发包和类库用来生成输出文本的通用工具,基于Java的开发包和类库。


讲了这么多,那么FreeMarker到底如何使用,它的优点儿在哪儿,我们为什么要使用它,接下来,根据我这一段时间的学习及在项目实战中的应用下面对FreeMarker做一个简单的介绍:

一、为什么要用FreeMarker?它的特性有哪些?

    t特性

        1.分离表现层和业务逻辑

           使用JSP开发过程中在页面中大量的存在业务逻辑的代码,使得页面内容凌乱,在后期大量的修改维护过程中就变得非常困难。FreeMarker根本不支持Java脚本代码,而是使用el表达式来输出展示数据。FreeMarker的设计初衷就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。


        3.智能的国际化和本地化

           字符集智能化(内部使用UNICODE)、数字格式本地化敏感、日期和时间格式本地化敏感、非US字符集可以用作标识(如变量名)、多种不同语言的相同模板


        2.提高开发效率

           在我们以往的开发中,使用的都是JSP页面来展示数据的,即所谓的表现层。我们都知道,JSP在第一次执行的时候需要转换成Servlet类,开发阶段进行功能调适时,需要频繁的修改JSP,每次修改都要编译和转换,那么试想一天中我们浪费在程序编译的时间有多少。相对于JSP来说,FreeMarker模板技术不存在编译和转换的问题,所以就不会存在上述问题。而且开发过程中,我们在不必在等待界面设计开发人员完成页面原形后,我们再来开发程序。


        3. 分工明确

           以往用JSP展现数据时,程序员并不熟悉界面设计技术,反之界面开发人员,也并不熟悉程序语言。协调工作很困难,使用FreeMarker后,作为界面开发人员,只专心创建HTML文件、图像以及Web页面的其他可视化方面,不用理会数据;而程序开发人员则专注于系统实现,负责为页面准备要显示的数据。


首先我们来对Freemarker有一个初略的认识,在这一章中,我们要学会如何写出一个简单但是非常有效的Freemarker模板。

案例 :1.模板+数据模型=输出


首先新建一个JavaProject

1.1新建一个文件夹存放 Freemarker 模板文件 后缀名为.ftl



1.2创建一个包和一个class 类



代码实例:

package com.wky.fm;

import java.io.File;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;


import freemarker.template.Configuration;
import freemarker.template.Template;

public class TestFreeMarker {

    @SuppressWarnings("test_FM")
    public static void main(String[] args) throws Exception {
        
        //创建freemarker配置实例
                Configuration cfg = new Configuration();
                
                //设置模板加载的目录
                cfg.setDirectoryForTemplateLoading(new File("test_fm"));
                        
                //创建数据模型
                Map
   
   
    
     map = new HashMap
    
    
     
     ();
                map.put("user", "张三");
                        
                //加载模板文件
                Template template = cfg.getTemplate("test.ftl");
                        
                //显示生成数据
                Writer out = new OutputStreamWriter(System.out);
                template.process(map, out);
                
                out.flush();
                out.close();
    }
    

}
    
    
   
   


1.3在模板中写测试代码




1.4 Demo测试 在控制台打印输出 模板信息




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值