SpringBoot如何用java生成静态html
作者:??七号im???? 发布时间:2023-08-08 08:46:59
标签:SpringBoot,java,生成,静态,html
SpringBoot集成Freemarker
主要特征:静态页面,无接 * 互
数据实时性不高且体量小的网站可采用生成静态html的形式
数据提前渲染至html内,若发生数据更新,则重新渲染数据
CDN加速让网站不再龟速
1. 引入Maven依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
2. 创建ftl
<html>
<head>
<title>啦啦啦啦啦</title>
</head>
<body>
<h1>侠客行</h1>
<p>${author!}</P>
<#if (poem?size)!=0>
<#list poem as item>
<p>${item.first!}${item.second!}</p></br>
</#list>
</#if>
</body>
</html>
3. 创建freeMarker工具类
@Slf4j
@Component
public class FreeMarkerUtil {
private static Configuration config;
private static String serverPath;
@Value("${spring.servlet.multipart.location:D:/static/}")
public void setServerPath(String serverPath) {
FreeMarkerUtil.serverPath = serverPath;
}
/**
* 通过freemarker生成静态HTML页面
* @param templateName 模版名称
* @param targetFileName 生成后的文件名
* @param ftlPath模板路径
* @param htmlPathhtml路径
* @param mapfreemarker生成的数据都存储在MAP中,
*/
public static void createHtml(String templateName, String targetFileName, String ftlPath, String htmlPath, Map<String, Object> map) {
try{
//创建fm的配置
config = new Configuration();
//指定默认编码格式
config.setDefaultEncoding("UTF-8");
//设置模版文件的路径
config.setDirectoryForTemplateLoading(new File(serverPath+ftlPath));
//获得模版包
Template template = config.getTemplate(templateName);
//从参数文件中获取指定输出路径
String path = serverPath+htmlPath;
//生成的静态页存放路径如果不存在就创建
File file = null;
file=new File(path);
if (!file.exists()){
file.mkdirs();
}
//定义输出流,注意必须指定编码
Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path+"/"+targetFileName)), UTF_8));
//生成模版
template.process(map, writer);
}catch (Exception e){
log.error("生成异常:{}",e);
}
}
4. 编写Java的代码
构造实体类,通过freemarker将实体类的信息渲染至html
@GetMapping("test")
public Object test() {
Map<String,Object> map = new HashMap<>(16);
List<Poem> list = new ArrayList<>();
list.add(new Poem("赵客缦胡缨,", "吴钩霜雪明。"));
list.add(new Poem("银鞍照白马,", "飒沓如流星。"));
list.add(new Poem("十步杀一人,", "千里不留行。"));
list.add(new Poem("事了拂衣去,", "深藏身与名。"));
map.put("author","李白");
map.put("poem",list);
FreeMarkerUtil.createHtml("poem.ftl","poem.html","侠客行/","侠客行/",map);
return BackMessage.ok(map);
}
实体类:
@Data
public class Poem {
private String first;
private String second;
public Poem(String first, String second) {
this.first = first;
this.second = second;
}
}
5. Html输出
<html>
<head>
<title>啦啦啦啦啦</title>
</head>
<body>
<h1>侠客行</h1>
<p>李白</P>
<p>赵客缦胡缨,吴钩霜雪明。</p></br>
<p>银鞍照白马,飒沓如流星。</p></br>
<p>十步杀一人,千里不留行。</p></br>
<p>事了拂衣去,深藏身与名。</p></br>
</body>
</html>
来源:https://juejin.cn/post/7114473059109011493
0
投稿
猜你喜欢
- 文件路径或者保存模板出现非法字符判断1)不为空判断string strTemplateName = txtTemplateName.Text
- 一、场景笔者就Zuul网关下实现其负载均衡与熔断机制(雪崩)进行实践,前提是已经导入zuul相关依赖springboot版本:1.5.9.R
- jar包打包实现jar包打包可以使用jar指令实现打包,在命令行中输入jar可以查看jar指令的内容 从最后显示的两个示例看出存在两种打包的
- 本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下:CREATE PROCEDURE [dbo].[GetNameById
- 1. 你可以讲下进程与线程的区别?为什么要用多线程?进程:进程是程序的一次执行过程,是系统运行程序的基本单位。线程:单个进程中执行中每个任务
- 本文实例总结了Java编程实现生成给定范围内不重复随机数的方法。分享给大家供大家参考,具体如下:在Java中的Math类中存在一个rando
- 这篇文章主要介绍了Java List分页功能实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 前言为了解决项目当中的权限管理问题,我们一般会选择引入spring security或者shiro框架来帮助我们更好地更快地构建权限管理体系
- 1、实体类package com.yl.bean;import java.io.Serializable;import java.util.
- RabbitMQ的示例,涉及到Direct、Fanout、Topic和Headers交换机以及普通队列、延迟队列和死信队列在pom.xml文
- 最近没做项目,重新整理了一个最完整的Mybatis Generator(简称MBG)的最完整配置文件,带详解,再也不用去看EN的User G
- 介绍Java中的建造者模式是一种创建型设计模式,它的主要目的是为了通过一系列简单的步骤构建复杂的对象,允许创建复杂对象的不同表示形式,同时隐
- 引导语线程池我们在工作中经常会用到。在请求量大时,使用线程池,可以充分利用机器资源,增加请求的处理速度,本章节我们就和大家一起来学习线程池。
- 一、spring-boot-devtools在pom中直接引入依赖<dependency> <groupId&
- 目录Spring是什么?Spring Boot是什么?Maven依赖项springboot为不同的Spring模块提供了许多启动程序依赖项。
- 导入mybatis jar包右键pom.xml模拟springboot底层实现类1.定义接口@Mapperpublic interface
- 前言目前主流的锁有两种,一种是synchronized,另一种就是ReentrantLock,JDK优化到现在目前为止synchronize
- 1.依赖的jar文件 jsch-0.1.53.jar2.登录方式有密码登录,和密匙登录 代码:主函数:import java.ut
- 实现效果:注意:using system.io; 往Form1上添加控件picturebox,再添加imagelist,并设置imageli
- 引言用过Spring Cloud的同学都知道在使用动态配置刷新的我们要配置一个 @RefreshScope,在类上才可以实现对象属性的的动态