FreeMarker指南

                  

                    一、首先了解FreeMarker

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

                 设计用来生成 HTML Web页面,特别是基于MVC模式的应用程序。虽然FreeMarker具有一些编程的能力,但

                 通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据,通俗一点来讲,

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

                 的通用工具,基于Java的开发包和类库


                       二、FreeMarker的优点

               1.分离表现层和业务逻辑                                               
                                 使用JSP开发过程中在页面中大量的存在业务逻辑的代码,使得页面内容凌乱,在后期大量的修改

                       维护过程中就变得非常困难 。 FreeMarker根本不支持Java脚本代码,而是使用el表达式来输出展示数据。

                       FreeMarker的设计初衷就是:。模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的

                       逻辑代码,而所有的逻辑都是由数据模型来处理的。  用户最终看到的输出是模板和数据模型合并后创建的。                        
                        2.智能的国际化和本地化                        
                                  字符集智能化(内部使用UNICODE)、数字格式本地化敏感、日期和时间格式本地化敏感、非US

                       字符集 可以用作标识(如变量名)多种不同语言的相同模板  。

                   
                        3.提高开发效率                        
                                   在我们以往的开发中,使用的都是JSP页面来展示数据的,即所谓的表现层。我们都知道,JSP在

                        第一次执行的时候需要转换成Servlet类,开发阶段进行功能调适时,需要频繁的修改JSP,每次修改都要

                        编译和转换,那么试想一天中我们浪费在程序编译的时间有多少。 相对于JSP来说,FreeMarker模板技术

                       不存在编译和转换的问题,所以就不会存在上述问题。而且开发过程中,  我们在不必在等待界面设计开发

                      人员完成页面原形后,我们再来开发程序。                        
                        
                       4. 分工明确                        
                                   以往用JSP展现数据时,程序员并不熟悉界面设计技术,反之界面开发人员,也并不熟悉程序语言。

                       协调工作很困难 ,使用FreeMarker后,作为界面开发人员,只专心创建HTML文件、图像以及Web页面的其

                       他可视化方面,不用理会数据;而程序开发人员则专注于系统实现,负责为页面准备要显示的数据。


               三、FreeMarker的常用指令        
            
                       1、if指令
            
                            <#if(columns?size>10)> 
                             <#ifpo_index%2==0> 
                                 …. 
                             </#if> 
                             <#else> 
                                 … 
                              </#if> 
           
                        2、switch、case、default、break指令
            
                                      虽然FreeMarker提供了switch指令,但它并不推荐使用switch指令来控制也输出,而是推荐使用

                           FreeMarker的if..elseif..else指令来替代它。
            
                        3、list、break指令
            
                                       list指令时一个典型的迭代输出指令,用于迭代输出数据模型中的集合。list指令的语法格式如下:
            
                                              <#list sequenceas item> 
                                                ... 
                                              </#list> 
            
                         除此之外,迭代集合对象时,还包括两个特殊的循环变量:
                                       a、item_index:当前变量的索引值。
                                       b、item_has_next:是否存在下一个对象也可以使用<#break>指令跳出迭代
            
                        4、include指令
            
                                  include指令的作用类似于JSP的包含指令,用于包含指定页,include指令的语法格式如下
            
                                          <#include filename [options]
            
                             在上面的语法格式中,两个参数的解释如下
            
                                      a、filename:该参数指定被包含的模板文件
            
                                      b、options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,

                                           encoding指定包含页面时所使用的解码集,而parse指定被 包含是否作为FTL文件来解析。

                                            如果省略了parse选项值,则该选项值默认是true
            
                       5、 import指令
            
                              该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的

                  语法格式如下:
            
                                           <#import path as mapObject>
            
                               在上面的语法格式中,path指定要被导入的模板文件,而mapObject是一个Map对象名,通过这行代码,

                    将导致path模板中的所有变量都被放置 在mapObject中
            
                                            <#import "/lib/common.ftl"as com>
            
                       6、noparse指令
            
                                 noparse指令指定FreeMarker不处理该指令里包含的内容,该指令的语法格式如下:
            
                                              <#noparse> 
                                                  ... 
                                              </#noparse> 
            
                       7、assign指令
            
                                   它用于为该模板页面创建或替换一个顶层变量
                  
                       8、setting指令
            
                                 该指令用于设置FreeMarker的运行环境,该指令的语法格式如下:
            
                                         <#setting name = value>
            
                                  name的取值范围包括如下几个:
            
                                              locale:该选项指定该模板所用的国家/语言选项
            
                                              number_format:该选项指定格式化输出数字的格式
            
                                              boolean_format:该选项指定两个布尔值的语法格式,默认值是"true、false"
            
                                              date_format,time_format,datetime_format:该选项指定格式化输出日期的格式
            
                                              time_zone: 设置格式化输出日期时所使用的时区

            四、java代码+测试

               1、创建Java项目

                    


                    2、导所需jar包


                                      

                                


                                3、1  创建模板目录

                         

                    3、2   在目录下创建模板文件

                         

                  4、Java代码

                        4.1 创建一个包以及一个class类

                               package com.java.fm;                    
                            
                               import java.io.File;                    
                               import java.io.OutputStreamWriter;                    
                               import java.io.Writer;                    
                               import java.util.HashMap;                    
                               import java.util.Map;                    
                            
                              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<String,Object> map = new HashMap<String,Object>();                    
                                               map.put("user", "张三");                    
                            
                                          //加载模板文件                    
                                          Template template = cfg.getTemplate("test.ftl");                    
                            
                                         //显示生成数据                    
                                        Writer out = new OutputStreamWriter(System.out);                    
                                          template.process(map, out);                    
                            
                                          out.flush();                    
                                          out.close();                    
                            
                                } 
 
  

                        4.2 、在模板中写测试代码

                               
                         4.3、测试    run  or  debug

                                

阅读更多
文章标签: freemarker
上一篇MD5加密原理
下一篇POI
想对作者说点什么? 我来说一句

FreeMarker设计指南1

2009年10月12日 57KB 下载

FreeMarker设计指南

2011年04月28日 255KB 下载

FreeMarker概述

2008年12月06日 39KB 下载

freemarker概述

2009年07月18日 194KB 下载

FreeMarker中文API

2017年11月01日 44KB 下载

FreeMarker设计指南.doc

2007年09月06日 210KB 下载

Freemarker 设计指南

2008年03月09日 173KB 下载

FreeMarker 设计指南

2013年07月08日 255KB 下载

FreeMarker设计指南.ppt

2007年08月05日 10KB 下载

FreeMarker开发指南

2009年06月25日 341KB 下载

没有更多推荐了,返回首页

关闭
关闭