`

java模板引擎Freemarker

    博客分类:
  • java
阅读更多

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

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

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



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

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

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

FreeMarker是免费的

而且你还可以通过Eclipse的插件来编辑FreeMarker,经过验证,FreeMarker 最好的 Eclipse 编辑插件是 JBoss Tools

FreeMarker特性

1、通用目标

能够生成各种文本:HTMLXMLRTFJava源代码等等

易于嵌入到你的产品中:轻量级;不需要Servlet环境

插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等

你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器

2、强大的模板语言

所有常用的指令:includeif/elseif/else、循环结构

在模板中创建和改变变量

几乎在任何地方都可以使用复杂表达式来指定值

命名的宏,可以具有位置参数和嵌套内容

名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突

输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换

3、通用数据模型

FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示

你可以使用抽象(接口)方式表示对象(JavaBeanXML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰

4、为Web准备

在模板语言中内建处理典型Web相关任务(如HTML转义)的结构

能够集成到Model2 Web应用框架中作为JSP的替代

支持JSP标记库

MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员

5、智能的国际化和本地化

字符集智能化(内部使用UNICODE

数字格式本地化敏感

日期和时间格式本地化敏感

US字符集可以用作标识(如变量名)

多种不同语言的相同模板

6、强大的XML处理能力

<#recurse> <#visit>指令(2.3版本)用于递归遍历XML

在模板中清楚和直觉的访问XML对象模型

开源论坛 JForum 就是使用了 FreeMarker 做为页面模板。

copy form http://www.oschina.net/p/freemarker/

收集优点:

taglib、freemarker 、jsf、Velocity 偶都用过,最后还是觉得frremarker用着最顺心,下面我就说说个人比较喜欢的优点:
1.freemarker 是一个干净轻量的模板引擎,源代码结构也很清晰.
你可以直接写一个java main方法来调用它,我的代码生成器就是这么做的.
2.freemarker 写出来的页面一般都是xml格式友好的,也就是说你可以写出很规范的xhtml,而且还可以直接使用一些xml的代码格式化工具直接美化.而且很容易发现其中缺少或者嵌套错误的tag
3. 个人觉得freemarker 和taglib,jsf至少在使用层面上很像,但是freemarker 的macro容易写,几行代码就搞定了,taglib和jsf需要写一堆java文件和tld文件,繁琐得很
4.freemarker 不能直接调用java对象的method. 这点有些人认为这是个缺点,但是我不这样认为. 个人觉得对于一个view层的东西来说,你要做的就是把view展现好就行了,不要再view中调用业务方法. 以前在公司做产品和后来做项目时就一再和手下的coder强调这点,但是因为种种原因,大家都还是会偷懒,直接在view中调用.用了fm后就不一样了, 现在你想在view中调用业务方法,那么你需要绕n个圈才能做到,还不如直接按照标准的mvc来做.
5.freemarker 内置了很多web编程中很常用的方法. 例如js_string ,html_string, ${lastUpdated?string.short}, ${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")} 这些东西虽然都很小,但是胜在常用啊,而且用起来很方便
6. eclipse的插件很好用,可以代码提示自动完成. 当然现在只有jboss tools下的那个插件.不过那个插件开发基本停止了,而且维护人员特别官僚,我给他们报了好几个bug,而且还提供了对应的修改代码,结果他们非要我给 他们提供patch文件,而且还要写对应的单元测试代码. 偶滴神啊,我只是写web的,eclipse的那套东西实在是不熟悉啊.
7. fm的macro的参数可以设置缺省值, 用起来很方便.

=========================http://yesmeshtu2008-163-com.javaeye.com/blog/505724

用FreeMarker有写脚本的感觉,改点什么一刷新就出来了,自身带的函数、表达式及指令非常周全,实在不满足需要时,只要写个macro就OK了。
我现在还把一些常用的,又不值得放到数据库中的分类信息用assign定义到util.ftl中了,可以很方便的使用。
比如:
<#-- 字形 -->
<#assign fontstyleMap={
"0":"常规",
"1":"斜体",
"2":"粗体",
"4":"下划线",
"8":"粗斜体"
}>

使用FreeMarker有一个非常不好的地方就是id的处理,数字型的,一旦超过3位,一定要使用 c 函数转一下,否则就会带上逗号分隔,如:38,383,838。吃了不少亏

用jsp有时候比较迷茫是自己写个tag整形,还是放到Action里处理好。还有就是在jsp里写代码的度也不好把握

===========

选择freemarker的原因: 
 1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。 但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。 
 2、宏定义比jsp tag方便 
 3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便 
 4、支持jsp标签 
 5、可以实现严格的mvc分离 //几乎公认。

=======================

FreeMarker缺点:
freemarker的map限定key必须是string,不支持其他数据类型。 freemarker的变量必须有值,没有被赋值的变量就会抛出异常。程序里面几乎所有可能出现空值的变量统统需要加上${xxx?if_exists},有些循环条件还需要写if判断。 不能在群集上面发布应用,freemarker支持在页面里面直接操作Session,request等,例如${Session[...]},但不能对其序列化。

===========================

1、首先freemarker是模板,当你打开页面的时候freemarker可也说是加载最快的。jsp则需要转换为servlet所以第一次要慢一些。
2、struts2的所有标签都是用freemarker写的,这也就是说你在freemarker中就可以直接引用struts2的任何标签,相当的方便。jsp不行吧。struts也不行。只有struts2。
3、如果使用了freemarker它与json一起使用会方便的很多。//这个可以认同的。

===============================

分享到:
评论

相关推荐

    Java模板引擎FreeMarker

    FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写,FreeMarker被设计用来生成HTML Web页面(为了提高页面的访问速度,把页面静态化),特别是基于MVC模式的应用程序

    JAVA源码Java模板引擎FreeMarker.tar

    JAVA源码Java模板引擎FreeMarker.tar

    java资源Java模板引擎 FreeMarker.tar

    java资源Java模板引擎 FreeMarker.tar提取方式是百度网盘分享地址

    Java模板引擎 FreeMarker.7z

    Java模板引擎FreeMarker是一款强大的开源模板技术,常用于Web应用中的动态内容生成,尤其是在MVC架构中,作为视图层的解决方案。它与Spring、Struts等框架配合使用,能够将业务逻辑与页面展示分离,使得开发者可以...

    Java模板引擎 FreeMarker

    FreeMarker是一个强大的、开源的Java模板引擎,常用于Web应用中的动态内容生成,尤其是在MVC架构中,作为视图层的技术。它与JSP、JSTL等技术不同,FreeMarker是模型和视图完全分离的,使得开发者可以专注于业务逻辑...

    Java模板引擎Freemarker教程.docx

    ### Java模板引擎Freemarker教程知识点详解 #### 一、FreeMarker概述 FreeMarker是一个用于生成输出文本的模板引擎,其应用广泛,特别是在Java应用程序中作为视图层的一部分。它支持多种类型的输出文本,包括HTML、...

    java源码:Java模板引擎 FreeMarker.tar.gz

    FreeMarker是一个强大的、开源的Java模板引擎,常用于Web应用中的动态内容生成,尤其是在MVC架构中,作为视图层的实现技术。它与JSP类似,但更专注于分离业务逻辑和显示逻辑,使得开发者可以编写更加清晰、独立于...

    java 模板之freemarker 小述

    Java模板引擎Freemarker是一个强大的、开源的模板引擎,它被广泛应用于Web开发中,用于动态生成HTML或其他类型的文本输出。在Java应用中,Freemarker允许开发者将业务逻辑与表现层分离,使得代码更加清晰,更易于...

    Java模板引擎之FreeMarker

    Java模板引擎之FreeMarker FreeMarker是一个开源的Java模板引擎,它被广泛应用于Web开发中,用于生成动态HTML、XML或其他格式的文本。这个强大的工具允许开发者将逻辑代码与表现层分离,使得网页设计人员可以专注于...

    Java模板引擎 FreeMarker源码

    FreeMarker是一个强大的、开源的Java模板引擎,常用于Web应用中的动态内容生成,尤其是在MVC架构中,与Spring等框架配合使用。它将业务逻辑与显示逻辑分离,使得开发者可以专注于设计视图,而不用关心如何将数据绑定...

    基于java的模板引擎 FreeMarker.zip

    FreeMarker是一个强大的、开源的Java模板引擎,常用于Web应用中的动态内容生成,尤其是在MVC(Model-View-Controller)架构中,它作为View层的一部分,将数据模型和HTML或其他类型的文档模板结合,生成最终的网页。...

    基于Java的模板引擎 FreeMarker.zip

    FreeMarker是一个强大的、开源的Java模板引擎,常用于Web应用中的动态内容生成,尤其是在MVC(Model-View-Controller)架构中,它作为View层的实现。FreeMarker与Spring、Struts等框架集成良好,允许开发者将业务...

    Java中使用 FreeMarker 生成pdf盖章合同文件

    FreeMarker是一个强大的模板引擎,常用于生成HTML、XML等动态内容,但也可以结合其他库来生成PDF。本篇文章将深入探讨如何在Java中使用FreeMarker生成带有盖章的PDF合同文件。 首先,让我们了解FreeMarker的基本...

    Java项目中利用Freemarker模板引擎导出--生成Word文档

    在这里将通过Freemarker这个模板引擎来实现导出 Word,项目不限于Swing,SSH,SSM,Spring Boot 之类的 ————————————— Spring Boot,Freemarker 编辑好格式的Word文档 1份 将Word文档里需要填充的地方...

    基于Java的实例源码-模板引擎 FreeMarker.zip

    总的来说,`基于Java的实例源码-模板引擎 FreeMarker.zip`提供的内容可能包括一个简单的Java应用,演示了如何集成FreeMarker,创建数据模型,加载模板并生成输出。这个实例对于学习和理解FreeMarker的工作原理非常有...

    浅谈Java模板引擎性能对比

    本文将对JSP、Thymeleaf 3、Velocity 1.7、Freemarker 2.3.23等四种主流Java模板引擎的性能进行对比,以帮助开发者选择合适的模板引擎。 JSP模板引擎 JSP(JavaServer Pages)是Java Servlet技术的扩展,用于生成...

    基于Java语言的freeMarker模板引擎设计源码解析与优化

    该项目深入解析并优化了基于Java语言的FreeMarker模板引擎,源码包含24个文件,其中包括12个Java源文件、4个FTL模板文件、3个XML配置文件、2个属性文件以及其他类型文件。项目结构清晰,旨在提升模板引擎的性能与...

    java使用freemarker模板技术导出word

    Java 使用 FreeMarker 模板技术导出 Word 是一种常见的数据动态生成文档的方法,它结合了 Java 的编程能力和 FreeMarker 模板引擎的强大功能,能够帮助开发者高效地生成结构化的 Word 文档。FreeMarker 是一个开源的...

    根据模板,freemarker、xDoc、POI三种方式生成Word文档(含jar包)

    通过三种不同的方式(freemarker+jfreechart、xDoc、POI),根据模板创建Word文件。可以动态修改Word中表格(table)、图表(chart)等数据。导入工程后,可直接运行xxxDemo文件,查看文档生成效果。详见压缩包中的...

    java通过freemarker模板导出word含图片

    本示例关注的是如何使用FreeMarker模板引擎来实现这个功能,并且包含在Word文档中插入图片的能力。FreeMarker是一个强大的、轻量级的模板语言,常用于Java应用中的视图层渲染。 首先,理解FreeMarker的基本概念。...

Global site tag (gtag.js) - Google Analytics