freemarker使用总结

简介: freemarker使用总结

为什么使用freemarker

当用户访问jsp的时候,jsp本质就是servlet,所以访问的时候会被翻译成java类,但是想html这种静态页面不用翻译直接访问速度就快

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

目前企业中:主要用Freemarker做静态页面或是页面展示

简单的Freemarker测试

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

使用freemarker依赖

<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会将这个标签替换为程序中指定的内容。

测试方法

Freemarker语法

访问Map中的key

访问Map中的数据:

${key}

访问POJO中的属性

pojo中的属性:

${stu.id}-${stu.name}

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

访问集合中的数据

<#list 集合 as 元素>

取集合中的数据

<#list studentList as student>

   下标:${student_index}

   集合中的元素:${student.id}/${student.name}

</#list>

if判断

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

日期

${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

空值处理

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

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

include

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

<#include "hello.ftl">

());


相关文章
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
461 0
|
缓存 自然语言处理 Java
详解FreeMarker Template:在Spring Boot中实现动态内容生成
详解FreeMarker Template:在Spring Boot中实现动态内容生成
2928 13
MyBatis-Plus-Join关联查询
MyBatis-Plus-Join关联查询
1410 2
使用Pattern.compile进行正则表达式匹配
使用Pattern.compile进行正则表达式匹配
|
Docker 容器
docker镜像加速问题
docker镜像加速问题
3542 1
docker镜像加速问题
|
XML Java 编译器
FreeMarker循环
FreeMarker循环
539 0
|
缓存 Java 程序员
Java|SpringBoot 项目开发时,让 FreeMarker 文件编辑后自动更新
在开发过程中,FreeMarker 文件编辑后,每次都需要重启应用才能看到效果,效率非常低下。通过一些配置后,可以让它们免重启自动更新。
569 0
QLExpress的基本语法
1、操作符和java对象操作 普通java语法 //支持 +,-,*,/,<,>,<=,>=,==,!=,<>【等同于!=】,%,mod【取模等同于%】,++,--,&&,|| //in【类似sql】,like【类似sql】,&&,||,!,等操作符 //and、or 和java里面的&& || .
28734 0
|
物联网 网络性能优化 开发工具
MQTT常见问题之MqttException 提示128如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
开发框架 前端开发 JavaScript
FreeMarker的基本语法
FreeMarker的基本语法
712 0
FreeMarker的基本语法