七 Freemarker(项目实现)

【java通过freemarker生成html页面并导出为pdf】 freemarker模板 代码 渲染freemarker模板,生成html并转化为PDF 项目结构 Java Poi-tl操作Word文档,插入文本和图片撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + I 标题:Ctrl/Command + Shift + H 无序列表:Ctrl/Command + Shift + U 有序列表:Ctrl/Command + Shift + O 检查列表:Ctr 阅读详情

七 Freemarker(项目实现思路)

初始用

背景:目前的文章详情页是一 个普通html, 详情数据是需要经过请求发送到后端才能获得数据,静态化就是每个文章的页面都是独立的一个htm页面,不需要经过后端请求就能直接独立打开供用户浏览。而媒体类网站、或者电商商品页通常会进行页面静态化。

页面静态化的优点:
●更容易做SEO (被百度和某些其他搜索引擎收录)
●加速用户访问,先展示主体部分,也就是文章的详情,然后其他数据异步加载
●不经过url请求的同时也降低请求数据库的压力

常见的模板引擎: JSP, Freemarker Thymeleaf, Velocity.

​ FreeMarker是-款模板引擎:即- 种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的, 而是一个Java类库, 是一款程序员可以嵌入他们所开发产品的组件。
​ 模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言,不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显已经准备好的数据。在模板中,你可以专注于如何展现数据,而在模板之外可以专注于要展示什么数据。
在这里插入图片描述
基础语法:

<html>
<head>
    <title>Hello Freemarker</title>
</head>
<body>
<#--
    Freemarker的构成语法:
    1. 注释
    2. 表达式
    3. 指令
    4. 普通文本
-->

<#-- 注释 -->
<#-- ${} 为变量表达式,同jsp -->

    <#-- 输出字符串 -->
    <div>hello ${there}</div>
</body>
</html>

实现方式(主要是在文章审核完就生成静态化界面):

  1. 创建了前端文章详情页的ftl模板存放在resource文件中,配置了输出路径后。融合文章类的动态数据生成html模板,减少了数据库的压力提升了用户体验。

  2. 通过远程rest调用articleId获得文章详情,将文章类存放到articleVO中,并将articleVO放在map中,调用template.procress生成静态页面。

  3. 文章阅读数需要单独获取,需要单独再写一个接口

改进

背景现在的静态化过程其实都是在同一台电脑上执行的,这样做的话前端后端必须同时部署在同一个服务器,耦合度很大。

解决措施我们可以接触gridfs作为中间存储介质,把生成的html上传,然后通知前端,让前端去gridfs 下载,前后端的程序就能在不同的服务器进行部署了。大大降低耦合度。
在这里插入图片描述
解耦后的静态化步骤
1.于是我再article的基础上新创建了html model工程,生成html,并且上传到gridfs中
2.获得mongoFileld,关联保存到文章表中
3.把mongoFileld发送至消费端,让其下载gridfs中的html到节点服务器进行发布创建消费端工程module

    public String createArticleHTMLToGridFS(String articleId) throws Exception {
        Configuration cfg = new Configuration(Configuration.getVersion());
        String classpath = this.getClass().getResource("/").getPath();
        cfg.setDirectoryForTemplateLoading(new File(classpath + "templates"));
        Template template = cfg.getTemplate("detail.ftl", "utf-8");
        // 获得文章的详情数据,使用rest远程调用
        ArticleDetailVO detailVO = getArticleDetail(articleId);
        Map<String, Object> map = new HashMap<>();
        map.put("articleDetail", detailVO);
        String htmlContent = FreeMarkerTemplateUtils.processTemplateIntoString(template,map);
        //System.out.println(htmlContent);
        InputStream inputStream = IOUtils.toInputStream(htmlContent);
        ObjectId fileId = gridFSBucket.uploadFromStream(detailVO.getId()+".html",inputStream);
        return fileId.toString();
    }

删除部分:也是需要rest调用html model里的删除服务。

主要流程如下:
1.用户撤回或者删除文章后,查询该文章对应的html所在gridfs的mongoFileld
2.根据mongoFileld删除gridfs中的文件
3.编码消费端,删除系统路径中的htmI文件
4.生产端调用消费端完整htm文件删除动作

缺点:只是服务器进行解耦并没有对接口进行解耦,请看下一章rabbitmq

【SpringBoot】Spring Boot项目整合FreeMarker模板 Spring Boot项目整合FreeMarker模板 记录 freemarker Apache FreeMarker™ is a *template engine*: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data. Templates are written in the 阅读详情

相关推荐

springboot项目搭建与freemarker的搭建

Spring Boot它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等)Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都 只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。优点:1)快速的创建应用。

qq_62898618的博客 1622

Freemarker项目创建与语法(IDEA 2018)

Freemarker项目创建与语法springboot-freemarker 项目创建步骤创建项目构建项目结构配置依赖配置启动类配置请求资源启动项目基本语法index.ftlUser.javaLogController .ftl最终效果 本文仅作为本人引导和复习概要,也欢迎指出错误和不足之处! springboot-freemarker 项目创建步骤 什么是freemarker http://freemarker.foofun.cn/ 适用范围 小型项目:前端和后台代码放在一起,或者进而小10几

yh1844516659的博客 2496

基于itext7+freemarker模板导出pdf

基于itext7+freemarker模板导出pdf,先生成html字符串再转成pdf,已解决中文问题,图片能正常显示

Freemarker

Freemarker

lwj0819lyj的博客 445

本项目主要通过一些详细的小列子讲述如何正确的使用FreeMarker

本项目主要由spring+springmvc创建起来的,分别列举不同的小案列展示FreeMarker不同标签的运用

freemarker 简单项目示例

freemarker 简单项目示例,生成静态html过程

Freemarker使用详解

1.什么是网页静态化技术 随着用户访问量以及数据量的增大,网页静态化技术方案如今越来越流行。 什么是网页静态化技术呢?简单来说就是将网页以纯静态方式的形式展现。 2.网页静态化技术与缓存技术的比较 共同点:都可以减小数据库的访问压力。 区别: (1)缓存技术适用于小规模的数据。以及一些经常变动的数据。 (2)网页静态化技术适用于大规模但是变化不太频繁的数据。 页面静态化与缓存技术的定义: 页面静态化是指通过一些模板技术(如freemarker)将数据模型生成静态html页面并通过..

qq_45441466的博客 1万+

Freemarker原理解析

FreeMarker适合于作为Web应用的表现层。freemarker大致原理是:将页面中所需要的样式放入FreeMarker文件中,然后将页面所需要的数据动态绑定,并放入Map中,通过调用FreeMarker模板文件解析类process()方法完成静态页面的生成。了解了上面的原理,接下来我就一步 步带您实现FreeMarker生成静态页面。

FreeMarker深度指南:模板引擎的核心技术与实战应用

库存: ${product.stock}管理面板

xiaoyu❅的博客 1134

freemarker实现代码生成器

freemarker实现代码生成器详细教程

CTF---Web---文件包含---01

文章目录前言一、题目描述二、解题步骤1.查看源代码2.文件包含(/etc/passwd)3.解码总结 前言 题目分类: CTF—Web—文件包含 一、题目描述 题目:提示寻找passwd文件 二、解题步骤 1.查看源代码 提示所有图片存储路径是download.php?name=img, 此时name参数的存在就提示此题可能为“文件包含”。 2.文件包含(/etc/passwd) 两种查看方式: 2.1、访问view-source:http://192.168.87.180/download.php

qq_22160557的博客 1391

在普通Java项目中使用freemarker

昨天简单的说了下在web项目中怎么使用freemarker,其实也可以在普通的java项目中使用freemarker,和web使用没什么太大的区别,只是在设置模板所在的文件夹的方法上有所不同,在Java项目中使用的是setDirectoryForTemplateLoading方法,在web项目中使用的是setServletContextForTemplateLoading方法,下面来看看怎么在普通

2543

Xftp卸载报错1628终极解决指南:深入解析InstallShield残留问题

本文深入解析了Xftp卸载时遇到的1628错误,其根源在于InstallShield安装引擎的残留问题。文章提供了从手动清理注册表项到彻底删除隐藏安装备份文件夹的完整解决方案,并给出了防患于未然的实用建议,帮助用户彻底解决这一经典安装报错。

weixin_29276847的博客 336

freemarker报错之七

1、错误描述 五月 30, 2014 11:33:57 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template processing error: "Expected hash. flag evaluated instead to freemarker.template.TemplateBooleanModel$2

游海东的技术专栏 5084

从零开始:HLW8110电能计量IC的硬件设计与软件调试全攻略

本文详细介绍了HLW8110电能计量IC的硬件设计与软件调试全流程,涵盖核心特性、抗干扰设计、UART通信协议及校准方法。通过实战案例和优化技巧,帮助工程师快速掌握高精度交流测量技术,适用于智能插座、充电桩等应用场景。

p5l2m9n4o6q的博客 576

SAP-PM设备模块-PM主数据之功能位置

SAP-PM模块学习

TRUIXIANG的博客 5138

如何在项目里面使用freemarker实现页面缓存(三)

1.环境配置:在这里我就不说了,上面两篇有如何配置freemarker 2.在项目里面你运用freemarker需要在项目里面创建一个模板文件夹,在web-inf下面创建一个ftl文件夹 3.由于通过freemarker将模板页面转化为html页面,前台访问直接跳页面就行了,所以不能把生成的html文件放入web-inf文件夹下面,在webapp下创建一个文件夹命名html 4.写servi

IT程序员的成长记 6661

IC版图设计之OASIS文件格式详解

OASIS(Open Artwork System Interchange Standard)是继GDSII之后新一代的集成电路版图数据交换标准,由SEMI在2004年正式发布(SEMI标准号:SEMI P39)。高压缩率:相比GDSII可减少3-10倍文件体积扩展性强:支持纳米级工艺的复杂图形描述跨平台兼容:独立于EDA工具和操作系统安全增强:内置校验和与加密支持。

ZZcppc的博客 2448

freemarker项目实践

freemarker项目演示   一  Java项目演示   1.首先创建Java项目,整个项目如图所示       2.导入freemarker包   3.编写*.ftl文件(例如:hello.ftl)     4.编写测试类(例如:TestFreemarker.java)     5.运行测试类,效果如图:     二  web项目演示

lqqwonderful的博客 524

Xilinx PCIe IP核示例工程仿真流程与关键任务解析

本文详细解析了Xilinx PCIe IP核示例工程的仿真流程与关键任务。通过搭建仿真环境、解读初始化日志,并深入剖析TSK_TX_MEMORY_WRITE_32等核心任务的TLP报文生成与交互过程,帮助开发者掌握PCIe IP核的仿真调试方法,为实际硬件设计提供可靠的验证基础。

weixin_28314575的博客 507

Proteus-51单片机-LCD1602显示DS1302时钟

本文详细介绍了如何使用Proteus仿真51单片机配合LCD1602显示DS1302时钟的步骤,包括DS1302时钟芯片的主要特性、引脚定义、外围电路以及LCD1602的原理和技术参数。此外,还讲解了LCD1602的指令集和显示字符的方法,并给出了初始化及显示操作的步骤。

让你爱上电路设计 6980

SpringBoot项目中集成FreeMarker实现模板发送邮件

最近项目中有个这样的需求:客户升级设备失败的话,需要给客户发送一个模板邮件,参数可以自己定义传入由邮件形式发送给客户。 我们通过SpringBoot自带的mail服务及FreeMarker模板引擎,实现模板发送邮件。 一、pom.xml中添加jar包依赖 <!-- freemarker实现邮件发送 --> <dependency> <groupId>or...

riemann_的博客 3680

FortiOS 存在身份验证绕过导致命令执行漏洞(CVE-2024-55591)

FortiOS 是 Fortinet 公司开发的操作系统,作为 Fortinet 安全平台的核心,提供全面的网络安全功能。 它将网络和安全功能无缝集成,支持跨本地、云、混合和融合 IT/OT/IoT 基础设施环境的统一管理。 FortiOS 7.6 版本引入了生成式人工智能助手、数据保护、托管服务和单一代理等新功能,进一步增强了其安全性和性能。

缘梦未来的博客 1842

freemarker实现和原理

freemarker

why2010ps的专栏 9072

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[springboot]controller+freemarker实现页面跳转

通过controller返回的字符串+freemarker模板引擎实现跳转对应的html页面的功能,以及开发过程中遇到的坑

“看见月亮就想起你”的博客 5677

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

FreeMarker七:FreeMarker与Servlet整合;(这篇博客是Freemarker部分的核心重点)

方式

小枯林的博客 1292

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 十 ElasticSearch(分布式搜索引擎)
下一篇: 八 消息队列及Rabbitmq
香草星冰乐
博客等级 码龄7年 21粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值