文档章节

关于使用freemaker的优缺点

织梦之魂
 织梦之魂
发布于 2017/06/03 22:05
字数 956
阅读 128
收藏 0

Apache FreeMarker is a template engine: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data. Templates are written in the FreeMarker Template Language (FTL), which is a simple, specialized language (not a full-blown programming language like PHP). You meant to prepare the data to display in a real programming language, like issue database queries and do business calculations, and then the template displays that already prepared data. In the template you are focusing on how to present the data, and outside the template you are focusing on what data to present.

通俗的讲,freemaker其实就是一个模板引擎。什么意思呢?——Java可以基于依赖库,然后在模板上进行数据更改(显示)。

在模板中,您专注于如何呈现数据,而在模板外(后台业务代码),您将专注于呈现什么数据。

但是,对于使用freemarker的过程中所体现出来的优缺点,主要做下总结。具体如下:

优点:

  1. 可以彻底的分离表现层和业务逻辑。在过去的一段时间里,freemarker还是表现出来来一些优势。在早期使用JSP 开发过程中发现在页面中大量的存在业务逻辑的代码,使得页面内容凌乱,在后期大量的修改维护过程中就变得非常困难。
    FreeMarker根本不支持Java脚本代码。
    FreeMarker的原理就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。
  2. 可以提高开发效率。JSP在第一次执行的时候需要转换成Servlet类,开发阶段进行功能调适时,需要频繁的修改JSP,每次修改都要编译和转换,那么试想一天中我们浪费在程序编译的时间有多少。相对于JSP来说,FreeMarker模板技术不存在编译和转换的问题,所以就不会存在上述问题。而且开发过程中,大家在不必在等待界面设计开发人员完成页面原形后,大家再来开发程序。
  3. 使得开发过程中的人员分工更加明确。这个相必大家都比较熟悉,各司其职,不再赘述。

缺点:

  1. 数据更新不及时。应用FreeMarker模板技术,在修改模板后,可能会看到已经过期的数据。如:生成静态的HTML页面后,如果一旦模板改变,而没有及时更新模板生成的HTML页面的话,用户看到的就是过期的数据。
  2. FreeMarker模板技术在应用过程中,FreeMarker中的变量必须要赋值,如果不赋值,那么就会抛出异常。想避免错误就要应用if/elseif/else 指令进行判段,如果对每一个变量都判断的话,那么则反而增加了编程的麻烦。
  3. FreeMarker的map限定key必须是string,其他数据类型无法操作。
  4. FreeMarker不支持集群应用。为了编成的方便性,把序列化的东西都放到了Session中,如Session,request等,在开发的过程中确实方便,但如果将应用放到集群中,就会出现错误。

以上,作为自己日常学习的整理笔记。

© 著作权归作者所有

织梦之魂
粉丝 3
博文 26
码字总数 18887
作品 0
南京
程序员
私信 提问
我在JAVA WEB管理系统中用到了titls进行页面布局?

我在JAVA WEB管理系统中用到了titls进行页面布局,不知道大家是否也用到了类似的页面布局框架,或者有更好的页面布局框架推荐吗? SiteMesh, freemaker,有没有人对这三个框架进行经验总结呢...

冬日阳光
2011/08/13
1K
2
关于activerecord的model增加属性的问题

如下描述正确与否,哪里有纰漏的,@詹兄请指出。 关于activerecord的model属性的创建: jfinal activerecord的model使用map存储属性值,这与传统的model(javabean)的设计是不一样的,在Activ...

bs2004
2012/03/25
1K
1
Spring MVC JSP和freemaker整合

关于springmvc如何整合freemaker 可以参考 http://my.oschina.net/bddiudiu/blog/228788 但是如果只是发布到前端的页面是需要静态化 即使用freemaker来生成 后台的操作部分的页面还是用jsp这...

阿丢丢
2014/04/30
1K
0
关于JFinal中setAttr方法中传递List对象的疑问

@JFinal 你好,我使用中遇到以下情况: 自定义的Pie对象,然后创建一个List来保存,再传递到FreeMaker中遍历显示,代码如下: 后来发现,在FreeMaker中的值一直都为空。经与之前成功传递的L...

33号小人物
2015/08/21
1K
1
FreeMaker一篇通

FreeMaker一篇通 前言 Freemaker是一个强大的模板引擎,相比velocity而言,其强大的过程调用、递归和闭包回调功能让freemaker可以完成几乎所有我们所想的功能。从个人看法而言,freemaker完全...

长平狐
2012/10/23
590
0

没有更多内容

加载失败,请刷新页面

加载更多

32位与64位Linux系统下各类型长度对比

64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂);可以访问大型数据库。本文介绍的是64位下C语言开发程序注意事项。 1. 32 位和 64 位C数据类型...

mskk
19分钟前
5
0
Vue 实现点击空白处隐藏某节点(三种方式:指令、普通、遮罩)

在项目中往往会有这样的需求: 弹出框(或Popover)在 show 后,点击空白处可以将其 hide。 针对此需求,整理了三种实现方式,大家按实际情况选择。 当然,我们做项目肯定会用到 UI 框架,常...

张兴华ZHero
26分钟前
7
0
SpringBoot激活profiles你知道几种方式?

多环境是最常见的配置隔离方式之一,可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景,在SpringBoot内支持了多种配置隔离的方式,可以激活单个或者多个配置文件。 激活Profi...

恒宇少年
27分钟前
7
0
PDF修改文字的方法有哪些?怎么修改PDF文件中的文字

PDF修改文字一直以来都是一个难以解决的问题,很多的办公族在办公的时候会有修改PDF文件中的文字的需要,可是PDF文件一般是不能进行编辑和修改的,难道就没有什么办法解决这个问题了嘛?不要...

趣味办公社
30分钟前
4
0
企业组织中采用服务网格的挑战

作者:Christian Posta 译者:罗广明 原文:https://blog.christianposta.com/challenges-of-adopting-service-mesh-in-enterprise-organizations/ 编者按 本文作者介绍了企业组织采用服务网...

jimmysong
40分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部