首页 > 其他分享 >freemarker从入门到精通

freemarker从入门到精通

时间:2022-10-09 22:05:02浏览次数:49  
标签:精通 入门 freemarker Freemarker date new ftl 模板


目录

 

​一:概述​

​二:Freemarker的Helloworld​

​三:freemarker模板语法​

​1.访问map中的key​

​2.访问POJO中的属性​

​3.取集合中的数据​

​ 4.判断​

​5.日期​

​6.Null值的处理​

​7.include​

​四:Springboot整合freemarker​


一:概述

web应用如果使用和jsp作为数据展示的模板,当此应用运行之后,会将对应的jsp页面翻译为对应的java文件,也就是servlet。相对于html而言,html这种静态页面不用翻译直接访问速度就很快。如何解决jsp编译为java文件然后再响应的问题?

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。目前企业中:主要用Freemarker做静态页面或是页面展示,

原理:

freemarker从入门到精通_html

二:Freemarker的Helloworld

新建一个web工程,完整的工程目录结构如下

freemarker从入门到精通_数据_02

使用freemarker需要引入jar包
 

<dependency>

<groupId>org.freemarker</groupId>

<artifactId>freemarker</artifactId>

<version>2.3.23</version>

</dependency>

首先要创建ftl模板文件

在webapp目录下新建ftls文件夹(名称以及存放的位置任意)存放Freemarker的模板

创建hello.ftl模板文件,(freemarker对于拓展名是没有要求的。通常使用ftl作为扩展名)输入如下内容下面要替换的内容

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>

</head>

<body>

测试:${hello}

</body>

</html>

 其中的${hello}是Freemarker的语法标签。Freemarker会将这个标签替换为程序中指定的内容。

测试方法

@Test
public void testDemo() throws Exception {
// 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
Configuration configuration = new Configuration(Configuration.getVersion());
// 第二步:设置模板文件所在的路径。
configuration.setDirectoryForTemplateLoading(new File("D:/workspaces/freemarker-test/src/main/webapp/WEB-INF/ftl"));
// 第三步:设置模板文件使用的字符集。一般就是utf-8.
configuration.setDefaultEncoding("utf-8");
// 第四步:加载一个模板,创建一个模板对象。
Template template = configuration.getTemplate("hello.ftl");
// 第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
Map dataModel = new HashMap<>();
//向数据集中添加数据
dataModel.put("hello", "this is my first freemarker test.");
// 第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。
Writer out = new FileWriter(new File("D:/temp/term197/out/hello.html"));
// 第七步:调用模板对象的process方法输出文件。
template.process(dataModel, out);
// 第八步:关闭流。
out.close();
}

三:freemarker模板语法

1.访问map中的key

${key}

2.访问POJO中的属性

${stu.id}-

${stu.name}

其中stu是pojo对象对应的key:这个对象还是放在map中传递过去的

freemarker从入门到精通_html_03

3.取集合中的数据

循环使用格式:

<#list 要循环的数据 as 循环后的数据>

</#list>

实例如下

freemarker从入门到精通_html_04

freemarker从入门到精通_数据_05

取循环中的下标

<#list studentList as student>

_index}

</#list>

freemarker从入门到精通_java_06

 4.判断

<#if student_index % 2 == 0>
我是if
<#else>
我是else
</#if>

实例

freemarker从入门到精通_java_07

5.日期

${date?date} 2016-9-13

${date?time} 17:53:55

${date?datetime} 2016-9-13 17:53:55

${date?string("yyyy/MM/dd")}

date是属性名

dataModel.put("date",new Date());

freemarker从入门到精通_html_08

6.Null值的处理

如果模板中引用的key不存在,会报异常,用${key!}代表空字符串

处理: ${aaa!"默认值"}或者${aaa!}代表空字符串

freemarker从入门到精通_html_09

7.include

一个ftl模板中可以引用另一个模板

<#include "模板名">

如:

<#include "hello.ftl">

四:Springboot整合freemarker


freemarker从入门到精通_数据_10

                         公众号 java一号 更多java实战项目资料、技术干活。更重要的是小猿愿成为你编程路上的一个朋友!


标签:精通,入门,freemarker,Freemarker,date,new,ftl,模板
From: https://blog.51cto.com/u_11334685/5741689

相关文章

  • Servlet 入门
    一、Servlet基础使用1.创建web项目,导入Servlet依赖坐标(pom.xml)<dependencies><dependency><groupId>javax.servlet</groupId><artifactId>j......
  • bootstrap入门学习笔记
    本来这记着一天的笔记,网上搜了一下教程手册,整理得比我的强多了。果断删掉。相应的bootStrap教程网址 ​​https://www.runoob.com/bootstrap/bootstrap-typography.html......
  • C++入门到理解set/multiset容器、pair对组
    一:基本概念在插入元素的时候会自动排好序,比如插入的是1,3,4,2,打印是1,2,3,4.底层是通过二叉树结构实现的,set容器不允许有重复的元素,但是multiset允许有元素重复。二:构造,遍历,赋值#i......
  • freemarker
    目录​​一:概述​​​​二:Freemarker的Helloworld​​​​三:freemarker模板语法​​​​1.访问map中的key​​​​2.访问POJO中的属性​​​​3.取集合中的数据​​​​ ......
  • Springboot整合freemarker
    一、概述FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Jav......
  • python基础入门之函数
    python基础入门之函数目录python基础入门之函数一、函数的概念二、函数的语法结构1、格式2、格式信息的解释三、函数的定义与调用四、函数分类五、函数的返回值1、什么是......
  • 【2022-10-09】DRF从入门到入土(七)
    drf组件之权限类使用#认证:校验用户是否登录,登录认证#用户登录了,某个接口可能只有超级管理员才能访问,普通用户不能访问#出版社的所有接口,必须登录,而且是超级管理员才......
  • 函数入门
    目录函数基础函数的语法结构函数的定义和调用函数的分类函数的返回值函数的参数函数基础计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功......
  • Java入门,如何高效学习
      对于当下要想入行学习Java,那就一定是个不错的选择,因为这个行业是个你只要努力就能看到成果的行业,而且就从近两年来看,当前的程序员依旧是这个时代的高薪职业,且想要入这......
  • freemarker使用总结
    目录​​为什么使用freemarker​​​​简单的Freemarker测试​​​​Freemarker语法​​​​访问Map中的key​​​​访问POJO中的属性​​​​访问集合中的数据​​​​if判......