当前位置: 首页 > news >正文

FreeMarker

 

概述:FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

入门案例

创建一个项目 freemarker-demo

pom.xml在引入依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- apache 对 java io 的封装工具库 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version></dependency></dependencies>

新建application.yml

server:port: 8081 #服务端口
spring:freemarker:cache: false  #关闭模板缓存,方便测试settings:template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试suffix: .ftl               #指定Freemarker模板文件的后缀名

在java包下新建controller包,在controller包下创建HelloController

@Controller
public class HelloController {@GetMapping("/basic")public String test(Model model) {//1.纯文本形式的参数model.addAttribute("name", "freemarker");//2.实体类相关的参数Student student = new Student();student.setName("小明");student.setAge(18);model.addAttribute("stu", student);return "01-basic";}
}

在java包下新建entity包,在entity包下创建Student

@Data
public class Student {private String name;//姓名private int age;//年龄private Date birthday;//生日private Float money;//钱包
}

如图所示

在resource包下新建template包,在template包下创建01-basic.ftl

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Hello World!</title>
</head>
<body>
<b>普通文本 String 展示:</b><br><br>
Hello ${name} <br>
<hr>
<b>对象Student中的数据展示:</b><br/>
姓名:${stu.name}<br/>
年龄:${stu.age}
<hr>
</body>
</html>

如图所示

 

运行FreeMarkerApplication

@SpringBootApplication
public class FreeMarkerApplication {public static void main(String[] args) {org.springframework.boot.SpringApplication.run(FreeMarkerApplication.class, args);}
}

访问http://localhost:8081/basic

相关文章:

  • 微机系统第二章-题目整理
  • 嵌入式学习--江协51单片机day8
  • 卷积神经网络基础(九)
  • Vue-样式绑定-class
  • liunx定时任务,centos定时任务
  • 前端工程的相关管理 git、branch、build
  • Git上传项目到GitHub
  • 企业销售管理痛点解析与数字化解决方案
  • CVE-2015-1422 Gecko CMS CSRF添加管理员
  • JVM的垃圾回收机制
  • c/c++的opencv均值函数
  • 盲盒APP开发——解锁盲盒经济无限可能
  • 机器学习(14)——模型调参
  • ThreadLocal 源码深度解析
  • 【线下沙龙】NineData x Apache Doris x 阿里云联合举办数据库技术Meetup,5月24日深圳见!
  • YoloV8改进策略:卷积篇|风车卷积|即插即用
  • 【无用知识】如何做到高效率
  • 今日行情明日机会——20250519
  • 【MySQL成神之路】MySQL常用语法总结
  • 聊聊更新中断和更新事件那些事儿
  • 昆明一小区火灾调查报告:七旬夫妇身亡,生前拾荒存放大量可燃物
  • 【社论】进一步拧紧过紧日子的制度螺栓
  • 新冠阳性率升高,专家:新冠变异株致病力没太多变化
  • 国家统计局:下阶段要继续发挥宏观政策作用,促进价格合理回升
  • 北方今年首场高温过程开启,西北华北黄淮多地最高或达40℃
  • 上海天文馆走进徐家汇书院,XR沉浸式天文科普体验再推力作