1、什么是FreeMarker?

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。其原理如下图所示:

FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:

(1)文本:直接输出的部分
(2)注释:使用<#-- … -->格式做注释,里面内容不会输出
(3)插值:即${…}或#{…}格式的部分,类似于占位符,将使用数据模型中的部分替代输出
(4)FTL指令:即FreeMarker指令,全称是:FreeMarker Template Language,和HTML标记类似,但名字前加#予以区分,不会输出

下面是一个FreeMarker模板的例子,包含了以上所说的4个部分:

<html>
<head>
<title>Welcome to FreeMarker 中文官网</title><br>
</head>
<body>
<#-- 注释部分 -->
<#-- 下面使用插值 -->
<h1>Welcome ${user} !</h1><br>
<p>We have these animals:<br>
<u1>
<#-- 使用FTL指令 -->
<#list animals as being><br> <li>${being.name} for ${being.price} Euros<br>
<#list>
<u1>
</body>
</html>

FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP,故此FreeMarker不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java等各种文本文件。

在Java Web领域,Freemarker是应用广泛的模板引擎,主要用于MVC中的view层,生成html展示数据给客户端,可以完全替代JSP。

总之,FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写,模板中没有业务逻辑,外部Java程序通过数据库操作等生成数据传入模板(template)中,然后输出页面。它能够生成各种文本:HTML、XML、RTF、Java源代码等等,而且不需要Servlet环境,并且可以从任何源载入模板,如本地文件、数据库等等。

2、FreeMarker有什么优点?

FreeMarker的诞生是为了取代JSP。虽然JSP功能强大,可以写Java代码实现复杂的逻辑处理,但是页面会有大量业务逻辑,不利于维护和阅读,更不利于前后台分工,容易破坏MVC结构,所以舍弃JSP,选择使用FreeMarker是大势所趋。当前很多企业使用FreeMarker取代JSP,FreeMarker有众多的优点,如下所示:

(1)很好地分离表现层和业务逻辑。

JSP功能很强大,它可以在前台编写业务逻辑代码,但这也带来了一个很大的弊端——页面内容杂乱,可读性差,这将会大大增加后期的维护难度。而FreeMarker职责明确,功能专注,仅仅负责页面的展示,从而去掉了繁琐的逻辑代码。FreeMarker的原理就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。

(2)提高开发效率。

众所周知,JSP在第一次执行的时候需要转换成Servlet类,之后的每次修改都要编译和转换。这样就造成了每次修改都需要等待编译的时间,效率低下。而FreeMarker模板技术并不存在编译和转换的问题,所以就不会存在上述问题。相比而言,使用FreeMarker可以提高一定的开发效率。

(3)明确分工。
JSP页面前后端的代码写到了一起,耦合度很高,前端开发需要熟悉后台环境,需要去调试,而后台开发人员需要去做不熟悉的前端界面设计。对两者而言,交替性的工作需要花费一定的学习成本,效率低下。而使用FreeMarker后,前后端完全分离,大家各干各的,互不影响。

(4)简单易用,功能强大
FreeMarker支持JSP标签,宏定义比JSP Tag方便,同时内置了大量常用功能,比如html过滤,日期金额格式化等等。FreeMarker代码十分简洁,上手快,使用非常方便。

3、Freemarker的使用方法

freemarker没有其他的任何依赖,仅仅依赖Java自身。

3.1、freemarker最新版本
最新版本是:freemarker 2.3.28,发布于:2018-04-04。需要:J2SE 1.5 或更高版本

3.2、freemarker maven仓库管理
把freemarker的jar包添加到工程中,Maven工程添加依赖

<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version>
</dependency>

4 参考

freemarker中文官网

什么是FreeMarker?相关推荐

  1. SpringBoot (三) :SpringBoot使用Freemarker模板引擎渲染web视图

    什么是Freemarker FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而 ...

  2. 网页静态化技术Freemarker

    网页静态化技术Freemarker 一.Freemarker的基本介绍 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道 ...

  3. FreeMarker中的list集合前后台代码

    freemarker中的list集合前后台代码: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它 ...

  4. MyEclipse安装Freemarker插件

    以下是安装Freemarker插件并设置MyEclipse使用该插件的步骤: 1.下载Freemarker插件 打开http://sourceforge.net/projects/freemarker ...

  5. eclipse lombok插件安装_Eclipse-安装Freemarker插件

    引言 我们在使用 Eclipse 开发 Java Web 程序时会使用 Freemarker 模板引擎,以帮助我们快速.便捷和结构化的创建页面,但是 Eclipse 显示生成的*.ftl文件如同在普通 ...

  6. Java项目:后台管理系统脚手架项目(java+SpringBoot+FreeMarker+mysql+JSP)

    源码获取:博客首页 "资源" 里下载! 项目描述: 这是一个基于SpringBoot框架开发的后台管理系统脚手架项目.之所以称为脚手架项目,是因为这个项目复用性很强,如果以后有其他 ...

  7. Java项目:OA办公自动化系统设计和实现(java+springboot+freemarker+mysql+maven+mybatis+jpa)

    源码获取:博客首页 "资源" 里下载! java springbootOA办公自动化系统: 主要功能模块:系统.用户.角色.考勤.流程.公告.邮件.任务.日程.计划.文件.笔记.通 ...

  8. freemarker写select组件报错总结(六)

    1.错误描写叙述 六月 26, 2014 10:53:26 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template pr ...

  9. FreeMarker标签介绍

    FreeMarker标签使用  一.FreeMarker模板文件主要有4个部分组成   1.文本,直接输出的部分   2.注释,即<#--...-->格式不会输出   3.插值(Inter ...

  10. freemarker基本语法及实例

    EG.一个对象BOOK 1.输出 ${book.name} 空值判断:${book.name?if_exists }, ${book.name?default('xxx')}//默认值xxx ${ b ...

最新文章

  1. mysql远程连接工具 cen_Navicat远程连接Centos数据库Mysql
  2. 使用Eclipse更新软件时出现Unable to locate secure storage module错误的解决方法
  3. 浅析如何才能提高网站的信息交互能力?
  4. mongodb3.2系统性学习——5、游标 模糊查询 findAndModify函数
  5. 【MRCTF—Web】做题+复现记录
  6. 华为服务器芯片总在pc,服务器芯片 华为
  7. Kruskal(P)和Prim(K)算法
  8. SAP IDES各Client用途和用户名密码
  9. radiogroup只走一次监听事件_如果一生只去一次内蒙,那走这条路线就够了!
  10. 百度地图和谷歌地图经纬度互转
  11. shell基础--正则表达式行列提取
  12. 第一章:自己动手写区块链之最小可行区块链
  13. UVA 1449 Dominating Patterns(AC自动机)
  14. 前程无忧、BOSS直聘、猎聘“抢”Z世代
  15. linux awl***程序说明
  16. 解决:TypeError: Descriptors cannot not be created directly
  17. CentOS6 使用 RPM 安装 apache 服务器(一)
  18. 我的世界java作弊怎么开_我的世界怎么开作弊模式 开启方法介绍
  19. Linux下 删除文件夹下的所有文件
  20. 浏览器无法保存密码,每次登录网页都要重新登录

热门文章

  1. 在WindowsMobile5.0系统上进行获取GPS信号(3)
  2. 2022年音乐产业研究报告
  3. 简单聊聊API网关是什么
  4. 使用微信公众号测试号如何进行自定义菜单的设定
  5. 条件随机场(CRF)
  6. java 数据流向图_数据流图懂不懂?
  7. 重庆大学804工商管理学硕考研经验贴
  8. python2.7配置环境变量_Python安装与环境变量的配置
  9. 见微知著,以小“控”大的三极管(四)
  10. hugo(雨果)搭建提示错误类型