Freemarker 的配置

Freemarker是一种用于生成动态模板的Java模板引擎。它可以将数据与模板文件结合,生成最终的输出内容。以下是使用Freemarker的实现和配置步骤:

  1. 引入Freemarker库:首先需要将Freemarker库添加到项目的依赖中。可以通过在Maven或Gradle中添加相应的依赖,或手动将Freemarker的jar文件添加到项目中。

  2. 配置Freemarker:在项目的配置文件中,需要配置Freemarker的一些属性,如模板文件的位置、编码等。可以通过创建一个Freemarker的配置对象,然后设置相关的属性。

Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);
configuration.setDirectoryForTemplateLoading(new File("path/to/templates"));
configuration.setDefaultEncoding("UTF-8");

这里的"path/to/templates"是模板文件所在的目录路径。

  1. 获取模板:在使用Freemarker之前,需要加载模板文件,可以通过配置的TemplateLoader对象来获取指定的模板。
Template template = configuration.getTemplate("template.ftl");

这里的"template.ftl"是模板文件的名称。

  1. 构造模板数据:将需要的数据封装成一个Java对象,可以是一个POJO(Plain Old Java Object)或者是一个Map对象。
Map<String, Object> data = new HashMap<>();
data.put("name", "John");
data.put("age", 30);

  1. 合并模板和数据:使用模板和数据进行合并,生成最终的输出内容。
Writer out = new OutputStreamWriter(System.out);
template.process(data, out);
out.flush();
out.close();

这里的template.process(data, out)方法会将模板和数据合并,并将结果输出到指定的Writer对象中。

以上是使用Freemarker的基本实现步骤。根据具体需求,还可以在模板中使用Freemarker的标签、指令等功能,对模板进行更加复杂的控制和处理。

在idea中配置freemarker

首先需要导入依赖

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

配置yml文件

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

需要准备导入freemarker-stater然后进行模版配置

<!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>

然后进行controller的配置

@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";}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/807990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何本地搭建Discuz论坛并实现无公网IP远程访问

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

GlusterFS(GFS)分布式文件系统

一、GlusterFS的概述&#xff1a; GlusterFS 是一个开源的分布式文件系统。 只在扩展存储容器&#xff0c;提高性能 并且通过多个互联网络的存储节点的进行几余&#xff0c;以确保数据的可用性和一致性 由存储服务器、客户端以及NFS/Samba 存储网关&#xff08;可选&#xff0c…

C#关于 InputSimulator的用法

InputSimulator 是一个 C# 库&#xff0c;它提供了模拟键盘和鼠标输入的功能&#xff0c;可以方便地在代码中模拟用户的键盘按键和鼠标操作。这在自动化测试、模拟用户操作等场景下非常有用。 使用 InputSimulator 非常简单&#xff0c;只需要几行代码就可以实现模拟输入的功能…

小娱xiaoyu xy-c5 路由器 刷机openwrt

1、刷固件openwrt 顾虑到可能要安装cups&#xff08;打印服务器&#xff09;只支持19版本以下的&#xff0c;所以只能安装19的版本&#xff0c;官网没有找到&#xff0c;都是21以上的&#xff0c;所以我只能到外面找玩家自己编译的了。 我这次刷的包是来源于这里&#xff1a;h…

Intrigue Core:一款功能强大的攻击面枚举引擎

关于Intrigue Core Intrigue Core是一款功能强大的开源攻击面枚举引擎&#xff0c;该工具可以帮助广大研究人员更好地管理应用程序的攻击面。 Intrigue Core集成了各种各样的安全数据源&#xff0c;可以将这些数据提取到标准化的对象模型中&#xff0c;并通过图形数据库跟踪关…

工作流引擎常见API(以camunda为例)

在Camunda中&#xff0c;API的继承关系主要体现在各个服务接口之间。以下是Camunda中一些常见服务接口的继承关系&#xff1a; ProcessEngineServices 接口&#xff1a; RepositoryService&#xff1a; 负责管理流程定义和部署。RuntimeService&#xff1a; 负责管理流程实例的…

001-NodeJs全局对象

概念 node是一个运行js的平台&#xff0c;在node中&#xff0c;用global对象取代了Window这个对象。 node中的repl环境可以执行js,通过命令node进入到repl环境。repl环境类似于Chrome的开发人员工具。 全局对象global 可以参考一下它的文档global全局对象 node版本介绍&am…

GPT-4对多模态大模型在多模态预训练、 理解生成上的启发

传统人工智能 模型往往依赖大量有标签数据的监督训练,而且一个模型一般只能解决一个任务,仅适用于单一场景, 这使得人工智能的研发和应用成本高,场景适应能力弱,难以规模化应用。 常见的多模态任务大致可以分为两类: 多模态理解任务,如视频 分类、视觉问答、跨模态检索、指代…

ARM Cordio WSF(三)——WSF在nRF52840平台移植

前文介绍了WSF架构及其WSF API&#xff0c;本文将介绍如何在一个硬件平台上使用WSF&#xff0c;这里基于stack项目下的nRF52840平台进行介绍。 3、PAL实现 对于要在一个处理器上运行WSF&#xff08;逻辑情况&#xff09;&#xff0c;需要处理系统的调度、系统SysTick、中断上下…

征程 5 芯片架构

文章目录 简介图像处理升级丰富异构计算自动驾驶 I/O 接口功能安全和信息安全保障征程 5 架构性能指标简介 征程5 是地平线第三代车规级产品,也是国内首颗遵循 ISO 26262 功能安全认证流程开发,并通过ASIL-B 认证的车载智能计算方案;⁣基于最新的地平线BPU 贝叶斯架构设计,…

Excel 防止数字变为E+的技巧

方式一&#xff1a;开始选项卡 ⇒ 分数 方式二&#xff1a;设置单元格格式 ⇒ 自定义 ⇒ 0 方式三 设置单元格格式为纯文本后&#xff0c;在粘贴数据当数字过长的时候(例如身份证号)&#xff0c;超过15位之后的数字都会变成0。 此时可以在数字前添加一个符号&#xff0c;例如 …

润色问题解惑

上博士为了毕业写学术论文头都大了&#xff0c;但更难受的是英语不咋地&#xff0c;投稿后经常会因为语言问题而惨遭拒稿&#xff0c;每每想起就令人心情郁郁&#xff0c;天台可期。有些审稿人也会直接告知需要专业的修改&#xff0c;那咋整呢&#xff0c;让润色呗&#xff0c;…

LeetCode 142.环形链表II(数学公式推导)

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…

Navicat的详细下载步骤

第一步&#xff0c;打开百度&#xff0c;找到Navicat官网 第二步&#xff0c;点击产品然后进去 第三步&#xff0c;点击直接下载然后跟着步骤来就OK啦

Centos7配置秘钥实现集群免密登录

设备&#xff1a;MacBook Pro、多台Centos7.4服务器(已开启sshd服务) 大体流程&#xff1a;本机生成秘钥&#xff0c;将秘钥上传至服务器即可实现免密登录 1、本地电脑生成秘钥&#xff1a; ssh-keygen -t rsa -C "邮箱地址 例&#xff1a;*****.163.com"一路回车…

跟TED演讲学英文:The inside story of ChatGPT‘s astonishing potential by Greg Brockman

The inside story of ChatGPT’s astonishing potential Link: https://www.ted.com/talks/greg_brockman_the_inside_story_of_chatgpt_s_astonishing_potential Speaker: Greg Brockman Date:April 2023 文章目录 The inside story of ChatGPTs astonishing potentialIntro…

功能强大的开源数据中台系统 DataCap 2024.03.1 发布

推荐一套基于 SpringBoot 开发的简单、易用的开源权限管理平台&#xff0c;建议下载使用: https://github.com/devlive-community/authx 推荐一套为 Java 开发人员提供方便易用的 SDK 来与目前提供服务的的 Open AI 进行交互组件&#xff1a;https://github.com/devlive-commun…

基于springboot+vue实现的高校宿舍管理系统(界面优美,十分推荐)

一、项目简介 本项目是一套基于springbootvue实现的高校宿舍管理系统设计与实现 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观…

探索 Java 网络爬虫:Jsoup、HtmlUnit 与 WebMagic 的比较分析

1、引言 在当今信息爆炸的时代&#xff0c;网络数据的获取和处理变得至关重要。对于 Java 开发者而言&#xff0c;掌握高效的网页抓取技术是提升数据处理能力的关键。本文将深入探讨三款广受欢迎的 Java 网页抓取工具&#xff1a;Jsoup、HtmlUnit 和 WebMagic&#xff0c;分析…

如何应用电桥电路的原理?

电桥电路是一种常用的测量技术&#xff0c;它利用了四个电阻的网络来检测电路的平衡状态。在平衡状态下&#xff0c;电桥的输出电压为零&#xff0c;这种特性使得电桥电路非常适合于精确测量电阻、电感、电容等电气参数&#xff0c;以及用于传感器和测量设备中。以下是电桥电路…