今年是农历大年初三,在这里首先给各位朋友拜个年,祝大家新年快乐,虎年大吉大利,事业蒸蒸日上。过年无事,把页面静态化技术整理整理。本文将以thymeleaf为例子,说明在springboot当中,如何基于thymeleaf模板引擎进行页面静态化,关于静态化的一些说明见网站页面静态化(一)初识。

thymeleaf模板引擎是springboot官方的标准配置,是一款高性能的前端模板引擎。这里需要说明的是,与时下流行的vue、react等前端框架不一样,thymeleaf的技术栈是以传统的modelandview为主,但是可以基于thymeleaf进行一些网页的静态化操作。下面进入正文,详细说明如何进行集成。

第一步、创建一个maven的springboot工程。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yelang</groupId><artifactId>boot-thymeleaf-static</artifactId><version>0.0.1-SNAPSHOT</version><name>boot-thymeleaf-static</name><description>基于springboot和thymeleaf的页面静态化演示</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven-jar-plugin.version>3.1.1</maven-jar-plugin.version></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.13.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><!-- https://mvnrepository.com/artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork> <!-- 如果没有该配置,devtools不会生效 --></configuration></plugin></plugins></build>
</project>

以上引用的关键是引入spring-boot-starter-thymeleaf。

第二步、在templates目录下创建待生成的网页模板。如下图:

模板如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>静态化模板</title>
</head>
<body><h1 th:text="${person.id}"></h1><h1 th:text="${person.username}"></h1><h1 th:text="${person.age}"></h1>
</body>
</html>

这里为了简单起见,只保留最简单的代码,正常的网页中还有js还有css,这些资源可以部署在静态资源或者cdn中以提高访问速度。

第三步、使用thmeleaf进行网页流写入

@Service
public class PersonService {private final static String DESC_PATH = "d:/person/";@AutowiredTemplateEngine templateEngine;public void createHtml(int id){//创建上下文Context context = new Context();Person person = loadPerson(id);//上下文放入数据context.setVariable("person",person);//路径的判断,没有自动创建File file0 = new File(DESC_PATH);if (!file0.exists()){file0.mkdirs();}//定义本地保存的静态文件名File file = new File(DESC_PATH+id+".html");if(file.exists()){file.delete();}try {//定义一个打印流PrintWriter pw = new PrintWriter(file);templateEngine.process("person",context,pw);} catch (FileNotFoundException e) {e.printStackTrace();}}//模拟封装数据的方法public Person loadPerson(int id){Person p = new Person();p.setUsername("yelangking");p.setAge(18);p.setId(id);return p;}
}

这里的代码比较简单,完成的功能就是创建上下文环境,准备数据,模板填充,目标文件写入。

第四步、测试静态网页生成

@SpringBootTest
class ThymeleafFirstApplicationTests {@AutowiredPersonService personService;@Testvoid contextLoads() {personService.createHtml(88088);}
}

这里通过junit模拟的方式进行页面生成,实际开发当中,应该是根据数据库或者缓存中的待转化的页面列表来动态生成,文件存储的目录应该替换成文件存储系统的目录。

第五步、系统输出的静态文件如下:

总结:通过上述例子即说明了如何基于springboot和thymeleaf的全站页面静态化方案的大概解决方案雏形。例子中说明了具体的处理流程以及关键技术,至于存储和网页模板需要根据实际项目进行调整开发。

网站页面静态化(二)thymeleaf生成相关推荐

  1. java网站页面静态化方案

    要生活得漂亮,需要付出极大的忍耐,一不抱怨,二不解释,绝对是个人才.--<变形记> 1.概述 在大型网站中,如京东和当当商品详情界面,看到的页面基本上是静态页面.为什么都要把页面静态化呢? ...

  2. 网站页面静态化,一般是这样搞的

    网站页面静态化,一般是这样搞的 随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配 ...

  3. 网站页面静态化(一)初识

    平日里,相信大多数人都有上网的习惯,而对于大型网站而言.最终呈现给用户的都是html页面,不论是纯静态还是伪静态,亦或者是动态生成.现如今的前端开发技术,不论是php.asp.jsp.vue.reac ...

  4. [Apache]网站页面静态化与Apache调优(图)

    ---------------------------------------------------------------------------------------------------- ...

  5. PHP如何实现HTML页面静态化

    前言: 随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化. 一般情况下会 ...

  6. jsp管理系统页面模板_页面静态化如何实现

    随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化. 一般情况下会从以下方 ...

  7. 实现页面静态化,PHP是如何实现的?

    随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化. 一般情况下会从以下方 ...

  8. 网站提速-页面静态化(2)

    第一篇.页面静态化 页面静态化概念 我们大多数情况下是直接访问php文件,php脚本在服务器端执行并 返回信息,对于一些大型的网站,访问量很大,频繁的动态操作和操作 数据库会加重服务器的负担.在实际开 ...

  9. 网站性能优化之_页面静态化

    现在互联网发展越来越迅速,对网站的性能要求越来越高,也就是如何应对高并发量.像12306需要应付上亿人同时来抢票,淘宝双十一--所以,如何提高网站的性能,是做网站都需要考虑的. 首先网站性能优化的方面 ...

最新文章

  1. Altium designer原理图导入word文档模糊——终极解决办法
  2. HDU 2544最短路dijkstra模板题
  3. 动脑2017android_您肯定要在2017年初尝试的25个新Android库
  4. 从“小白”到“白帽子黑客”的实用指南
  5. 单点登录解决方案-CAS
  6. new RandomAccessFile有时很耗时间
  7. 【ML小结10】集成学习
  8. jquery ajax 详细教程视频,Ajax+jquery基础与提升2017视频教程
  9. 如何重新设置Windows10密码
  10. 团队项目开发“编码规范”之九:代码分析
  11. matlab多元回归分析怎么计算,matlab在多元线性回归分析中的相关计算
  12. 如何让你开发的产品在同质化洪流中脱颖而出?
  13. 简直太猛了!GitHub《植物大战僵尸》重磅开源,两天就破千Star!
  14. MySQL_MySQL基础查询(DQL)
  15. 如何成为新媒体百万大咖?教你5分钟学会制作电影解说短视频
  16. ubuntu连接xp的共享打印机
  17. 值得一生珍藏的电影台词
  18. 亚马逊测评使用的买家账号怎么养?测评自养号需要具备哪些条件?
  19. ppt中的流程图怎么整体移动_ppt中的流程图怎么整体移动_PPT中的这种图片分割效果,该怎么搞?...
  20. 语音转文字和音频文件转文字应该如何完成

热门文章

  1. 正则表达式-Linux系统的任督二脉
  2. 信息检索(IR)—信息检索模型(一)
  3. 系统杂类----笔记本wifi 无线功能开启以及关闭
  4. win10安装宝塔面板nginx开启pathinfo模式无效的解决办法(解决tp5在nginx上除首页以外全部404的问题)
  5. 检验内存泄漏memwatch的使用
  6. nginx配置文件rewrite规则
  7. windows 2000 下修改MAC地址
  8. opengl 画椭圆_卧蚕原来这么重要,没有也要画出来!
  9. Java并发编程(六):从CPU缓存一致性协议到JMM(Java内存模型)
  10. Python之多进程和多线程详解