Apache官网对FreeMarker的解释如下:


Apache FreeMarker™是一个模板引擎 :一个基于模板和变化的数据来生成文本输出(HTML网页,电子邮件,配置文件,源代码,等等)的Java库。

模板是用FreeMarker模板语言(FTL)编写的,这是一种简单的专业语言(不是像PHP那样成熟的编程语言)。 通常,使用通用编程语言(如Java)来准

备数据(发出数据库查询、进行业务计算)。然后,Apache FreeMarker使用模板显示准备好的数据。在模板中,您关注的是如何显示数据,而在模

板 之外,您关注的是要显示什么数据。

这种方法通常被称为MVC (Model View Controller)模式,尤其适用于动态web页面。它有助于将web页面设计人员(HTML作者)和开发人员(通

常是Java程序员)分离开来。设计人员不会在模板中面对复杂的逻辑,而且可以在不需要程序员更改或重新编译代码的情况下更改页面的外观。

虽然FreeMarker最初是为在MVC web应用程序框架中生成HTML页面而创建的,但它并不绑定到servlet或HTML或任何与web相关的东西。它

也用于非web应用程序环境。

特点:

FreeMarker的亮点:

      • 强大的模板语言:条件块、迭代、赋值、字符串和算术操作和格式、宏和函数,包括其他模板、缺省转义(可选)等等
      • 多用途和轻量级:零依赖,任何输出格式,可以从任何地方加载模板(可插拔),许多配置选项
      • 智能的国际化和本地化:本地化敏感的数字和日期/时间格式,本地化的模板变化。
      • XML处理功能:将XML DOM-s放入数据模型并遍历它们,甚至以声明的方式处理它们

在idea上新建springboot项目,添加如下依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

appliaction.properties配置文件 :

#端口号
server.port=8087 #ftl文件路径
spring.freemarker.template-loader-path=classpath:/templates/

temlpates下新建 freemaker.ftl 文件

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Hello FreeMaker!</title>
</head>
<body>
<p>
welcome ${name} to freemarker!
</p> <p>性别:
<#if sex==0>

<#elseif sex==1>

<#else>
保密
</#if>
</p> <h4>我的好友:</h4>
<#list friends as item>
姓名:${item.name} , 年龄${item.age}
<br>
</#list>
</body>
</html>

Controller如下:

@Controller
public class StudentController { @RequestMapping("testFreeMaker")
public String student(Map<String,Object> map){
map.put("name", "Eminem");
map.put("sex", 1); //sex:性别,1:男;0:女; List<Map<String, Object>> friends = new ArrayList<Map<String, Object>>();
Map<String, Object> friend = new HashMap<String, Object>();
friend.put("name", "Dr.Dre");
friend.put("age", 53);
friends.add(friend);
friend = new HashMap<String, Object>();
friend.put("name", "Skylar Grey");
friend.put("age", 32);
friends.add(friend);
map.put("friends", friends); return "freemaker";
}

启动项目,访问:http://localhost:8087/testFreeMaker

代码地址:https://github.com/liuchunbo24/SpringBoot_FreeMarker_Demo

Springboot集成FreeMarker的更多相关文章

  1. springboot 集成 freemarker

    前面我们已经实现了thymeleaf模板,其实freemarker和thymeleaf差不多,都可以取代JSP页面,实现步骤也差不多,我们来简单实现一下 引入pom.xml依赖如下 <depen ...

  2. SpringBoot 集成FreeMarker

    SpringBoot官方不推荐使用jsp,因为jsp不好发挥SpringBoot的特性.官方推荐使用模板引擎代替jsp,现在很多公司都使用FreeMarker来作为SpringBoot的视图. Spr ...

  3. SpringBoot集成Freemarker与Thymeleaf

    一:概括 pom.xml添加依赖 配置application.yml HTML页面使用表达式 二:Freemarker模板引擎 1.添加依赖 <!-- ftl模板引擎 --> <de ...

  4. SpringBoot集成freemarker和thymeleaf模板

    1.在MAVEN工程POM.XML中引入依赖架包 <!-- 引入 freemarker 模板依赖 --> <dependency> <groupId>org.spr ...

  5. springboot集成freemarker 配置application.properties详解

    #配置freemarker详解 #spring.freemarker.allow-request-override=false # Set whether HttpServletRequest att ...

  6. springboot集成freemarker属性配置(不知道是针对于某个版本,2.0后有变动)

    freemarker属性配置 freemarker属性配置: spring.freemarker.allow-request-override=false # 设置是否允许HttpServletReq ...

  7. SpringBoot集成Freemarker前端模板

    1.在pom.xml中引入freemarker的jar包 <dependency> <groupId>org.springframework.boot</groupId& ...

  8. SpringBoot 集成 FreeMarker 导出 Word 模板文件(底部附源码)

    思路解说 word 模板文件(doc 或 docx 文件)另存为 xml 文件 将后缀 xml 改成 html:大部分文档会改成 ftl(FreeMarker 的后缀名),因为 word 文件另存为 ...

  9. springboot集成freemarker静态资源无法访问

    如题配置文件加上 #设定静态文件路径,js,css等.static为你放置静态资源的文件夹名称,也可以叫别的名字.properties加上 spring.mvc.static-path-pattern ...

随机推荐

  1. 通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署

    通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署 Intro Azure DevOps Pipeline 现在对于公开的项目完全免费,这对于开源项目来讲无疑是个巨大的 ...

  2. C语言字符数组回顾

    赋值篇: Part1      错误引例*2: char c6[];//WRONG c6="HELLO";//WRONG char c7[];//WRONG c7[]='H';// ...

  3. 想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜

    本文由云+社区发表 前言 业务已基于Redis实现了一个高可用的排行榜服务,长期以来相安无事.有一天,产品说:我要一个按周排名的排行榜,以反映本周内用户的活跃情况.于是周榜(按周重置更新的榜单)诞生了 ...

  4. svn + nginx unit + python3自动化发布web服务方法

    本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...

  5. 【心得】Lattice Diamond 后端约束实战小结

    [博客导航] [导航]FPGA相关 IOB约束 参考<插入IO寄存器和位置约束---lattice&diamond>,推荐的方法是: 1.在strategy设置[Map Desig ...

  6. Java Web Token - JWT

    JWT认证过程:https://www.codetd.com/article/3602378 JWT官方文档:https://jwt.io/introduction/

  7. JS中各种宽度距离小结

    js中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词解释 screen:屏幕.这一类取到的是关于屏幕的宽度和距离,与浏览器无关,应该 ...

  8. Android Studio3.x上使用Lombok

    1.添加gradle依赖 implementation 'org.projectlombok:lombok:1.16.8' //添加lombok依赖implementation 'org.glassf ...

  9. day12(表达式,推导式,名称空间与作用域,函数的嵌套定义)

    一,复习 # 字符串的比较 # -- 按照从左往右比较每一个字符,通过字符对应的ascll进行比较 # print('a' > 'A') #True # print('ac' > 'ab' ...

  10. scala的多种集合的使用(6)之映射Map的操作方法

    1.创建映射 1)创建不可变的映射 scala> val status = Map(1 -> "a",2 -> "b") status: sc ...