• 从一坨代码说起


    一、前言

    下图所示这一坨代码是为了生成HTML格式邮件正文内容,如果邮件内容要稍微调整一下,这种代码怎么维护?

    好吧,其实这是一篇与邮件有关的文章,SMTP发送邮件 介绍了邮件发送各种方式及SMTP各种端口,从半张残缺的图片说起  讲了邮件发送图片用base64编码避免远程图片地址因安全问题被邮件服务器限制,今天我们来讲一下怎么使用模板引擎构建邮件正文内容。

    二、模板引擎概念

    1、模板引擎目的是为了将显示和数据分离,其本质是将模板文件和数据通过模板引擎生成HTML代码,主要就是将指定的标签转换为业务数据,另外还要能将指定的语句按照某种流程转换输出,比如循环判断标签等。

    2、模板引擎是各平台前后端都有的概念,项目中接触过的有JavaScript的EasyTemplate、后端Java在做没有前后端分离的项目时用到Freemarker、Velocity,另外在SpringBoot开始流行时考虑到SEO优化我们用ThymeLeaf来搭建窗帘定制网站。

    3、简单的模板引擎我们自己也可以写,其本质对特殊标签进行替换。

    三、ThymeLeaf构建邮件内容

    ThymeLeaf是SpringBoot官方推荐的模板引擎,它提供了SpringMVC完美的支持,可以做为Web应用的View层,我们这里仅将其做为邮件模板,最简单使用方法如下所示

    1、依赖引入

    • spring-boot-starter-thymeleaf

    • ognl  这个一定要加上,表达式语言,可以方便地遍历JavaBean对象。

    2、模板文件

    模板文件默认放在resources/templates/下就可以,动态数据使用ThymeLeaf标签。

    3、代码

    4、执行结果

    注:ThymeLeaf标签很丰富,这里不展开讲。

    四、ThymeLeaf模板引擎源码解读

    1、TemplateEngine.initialize

    引擎初始化方法,判断是否已经执行过初始化,如未初始化则执行初始化方法,设置模板解析器,如果外部没有设置,默认用StringTemplateResolver。

    2、TemplateManager.parseAndProcess

    解析模板,如果模板已经加载到缓存直接使用,否则读取模板文件,最终会调用TemplateHandlerAdapterMarkupHandler去解析HTML文档,并且将数据渲染到HTML文档上,这个解析器和以前用的DOM4J什么看起来很像,也是以事件的方法触发,比如handleOpenElementStart、 handleOpenElementEnd这种方法。

    3、输出渲染后的HTML文档

  • 相关阅读:
    JavaScript流程控制分支
    05Java数据类型/标识符/键盘录入
    【python】入门第一课:了解基本语法(数据类型)
    华为数字化转型之道 方法篇 第四章 用变革的方法确保规划落地
    ESP32-C3入门教程 IoT篇⑤——阿里云 物联网平台 EspAliYun RGB LED 实战之批量生产的解决方案
    【MySQL】MySQL事务隔离机制与实现原理详解
    使用Python操作CSV文件,方便又快捷
    C++基础学习笔记-类与对象
    jupyter notebook anaconda环境下查看|加载|更换内核
    Qt动态链接库
  • 原文地址:https://blog.csdn.net/2301_76787421/article/details/133632160