SpringBoot自动配置的模版引擎

文章目录

目录

一、Thymeleaf

1.什么是Thymeleaf?

2.什么是模版引擎?

3.JAVA中的SPI(Service Provider interface)机制?

4.META-INF目录是干嘛用的?

总结


前言


一、Thymeleaf

1.什么是Thymeleaf?

        hymeleaf是试用于Web和独立环境的现代服务器端Java模版引擎

  1. 目的:它的主要目标是为您的开发工作流程带来优雅自然的模版-HTML可以再浏览器中正确显示,也可以作为静态原型工作,从而可以在开发团队中加强合作
  2. Thymeleaf拥有适用于Spring Framework模块,与喜欢的工具的大量集成以及插入我自己的功能,对于HTML5JVM Web来来说,Thymelef是理想的选择--尽快它还有很多工作要做
  3. 优点:
    1. 动静分离:Thymeleaf选用html作为模版页,这是任何一块其他模版引擎做不到的,它能使用html通过一些特定标签语法代表其含义,但是未破坏文件接口,即使没有网络,不通过后端渲染也能在浏览器中打开,大大方便界面的测试和修改
    2. Thymeleaf提供标准和spring标准两种语言,可以直接套用模版实现JSTL,OGNL表达式效果,避免每天套模版,改JSTL,改标签的困扰,同事开发人员也可以拓展和创建自定义的方言
      1. JSTL:是java标准标签库,是jsp标准集合,封装了jsp应用的通用核心功能,根据JSTL标签所提供的功能,可以将其分为五个类别:核心标签,格式化标签,SQL标签,XML标签,JSTL函数
      2. OGNL:是对象图导航语言,是一种强大的表达式语言,它相当于一个上下文(OgnlContext)概念,就是一个Map结构(教师 老师 学生)

2.什么是模版引擎?

        (在这里指的是用于Web开发的模版引擎)是为了使用户界面于业务数据(内容)分离而产生的,他可以生成特定格式的文档.用于网站的模版引擎就会生成一个标准的html文档.从字面上理解末班引擎,,最重要的就是模版二字,这个意思就是做好一个模版后套入相对应位置的数据,最终通过Htmdull

      模版引擎的理解:可以形象的做一个比喻:开会!相信你在上学初高中的时候每次开会都要提取布置场地,拿上板凳,收拾场地,而你让了大学之后每次开会再也并不用去机操场了,每次开会都去学校的大会议室,桌子板凳,桌子板凳音响主席团齐全,来个人即可,还可以复用.模拟引擎的功能就类似于我们会议室开会一样开箱即用,将模版设计好之后直接填充数据即可而不需要重新设计整个页面.提高页面和代码的复用性.

3.JAVA中的SPI(Service Provider interface)机制?

  1. 是一种软件设计模式,用与在应用程序中动态的发现和加载组件.SPI的思想是:定义一个接口或者抽象类,然后通过在classpath中定义实现该接口的类来实现对组件的动态发现和加载.
  2. SPI的主要目的是解决在应用程序中使用可插拔组件的问题.比如,一个应用程序可能需要使用不同的日志框架或者数据库连接池,但是这些组件的选择可能取决于运行时的条件.通过使用SPI,应用程序可以在运行时发现并加载适当的组件,而无需在代码中硬编码这些组件的实现类
  3. 在java中SPI的实现方式是通过在META-INF/services目录下创建一个以服务接口全限定名为名字的文件,文件中包含实现该类的全限定名.当应用程序启动时,java的SPI机制会自动扫描classpath中的这些文件,并根据文件中指定的类名来加载实现类
  4. 通过使用SPI,应用程序可以实现更灵活,可拓展的结构,同事也可以避免硬编码依赖关系和增加代码的可维护性

4.META-INF目录是干嘛用的?

  1. jar文件:开发中可以直接用java class文件来运行程序,但是不太方便,所以出现了jar文件来提供发布和运行,jar文件实际上是class文件的zip压缩存档,有很多工具都可以操控这种格式的文件,所以jar文件本身并不能表达应用程序的便签信息.
  2. 为了提供存档便签信息,出现了Manifest.mf文件,jar文件中有一个特定的目录来存放标签信息:META-INF目录,主要应关注其中
  3. 一个名叫manifest.mf的文件,它包含了jar文件的内容描述,在应用程序运行时向JVM提供应用程序的信息
  4. META-INF相当于一个信息包,目录中的文件和目录获得Java 2 平台的认可与解释,用来配置应用程序,扩展程序,类加载器和服务manifest.mf文件,在用jar打包时自动生成
  5. jar文件中都有一个默认产生的META-INF目录和其中的manifest.mf文件 使用jar命令可以直接产生META-INF目录和manifest.mf文件
  6. 说白了META-INF目录实际上就是描述jar文件中的信息的一个目录,目录中除了manifest.mf文件之外其实还是可以配置很多信息的,这些文件都是在应用程序运行的过程中向其提供jar文件的内容描述的.


 

 

总结

参考和学习文档:

Thymeleaf一篇就够了_Big sai的博客-CSDN博客

https://blog.csdn.net/qq_38449518/article/details/82414069?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168619468216800225547647%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168619468216800225547647&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-82414069-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=meta-inf%E6%98%AF%E4%BB%80%E4%B9%88%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4187

感谢尚硅谷spring6的文字教程

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

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

相关文章

chatgpt赋能Python-python_lirc

Python-LIRC:让Python与遥控器无缝连接 介绍 Python-LIRC是一个Python语言的模块,它提供了一种接口,用于与Linux Infrared Remote Control(LIRC)系统进行通信。有了Python-LIRC,你可以轻松地将红外线遥控…

重磅!牛客笔试客户端可防ChatGPT作弊

上线俩月,月活过亿。 爆火的ChatGPT能代写文,撕代码,善玩梗,秒答题,几乎“无所不能”,争议也随之而来。 调查显示,截至2023年1月,美国89%的大学生利用ChatGPT应付作业,53…

学生用ChatGPT拿下全班最高分,教授惊呆

【导读】ChatGPT爆火两个月,整个教育系统都被颠覆了。学生用得不亦乐乎,而老师们迫不得已,纷纷打响了ChatGPT反击战。 ChatGPT已经让大学老师们受到惊吓了。 摸出门道的学生们,开始使用ChatGPT生成论文,得到了A的分数…

自然语言处理(NLP)之跳字(元)模型<skip-gram>与连续词袋模型<continuous bag of words>

自然语言处理(Natural Language Processing, NLP)是AI里的一个非常重要的领域,比如现在很火爆的ChatGPT,首先就需要很好的理解输入内容的意思才能够做出合理的回复。 自然语言处理应用非常广泛,比如机器翻译、问题回答、文本语义对比、语音识…

DeepMind:用 GNN 学习通用推理算法

文 | 智商掉了一地 小孩子才做选择,我的模型全!都!要! 近年来,基于深度神经网络的机器学习系统取得了巨大进步,尤其是在以感知为主的任务上。这一领域表现突出的模型通常要在分布中进行泛化,意味…

GPT-4发布:人工智能新高度,以图生文技术震撼,短时间内挤爆OpenAI模型付费系统

“GPT-4,起飞!”今日凌晨1点,OpenAI正式推出史上最强大的GPT-4文本生成AI系统 GPT-4:人工智能的新里程碑 你可能已经听说过GPT-3,它是一种能够生成自然语言文本的强大模型,可以用来回答问题、写文章、编程…

从BERT到ChatGPT,9大研究机构全面综述:「预训练基础模型」

来自:新智元 编辑:LRS 【导读】2023年了,还有人从头开始训模型吗?追踪一下从Bert以来的那些预训练模型。 ChatGPT在few-shot和zero-shot场景下展现出的惊人性能,让研究人员们更坚定「预训练」是一条正确的路线。 预训练…

【AI项目实战】某语言模型-stable diffusion-vits-cqhttp 实现能对话能语音能绘画的Q群机器人

好久没写文章了,终于想起来我有个博客账号系列。。 项目已开源在github上。 文章已滤敏,一切涉及语言模型名字的内容都以某语言模型代替 提示:AI绘画部分建议6G显存以上。 cqhttp 用于接收群友消息,并回复消息。 某语言模型 基于…

微信PC端各个数据库文件结构与功能简述 - 根目录

异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在CSDN、掘金和个人博客(一定是异想之旅域名)…

springboot+vue集成websocket实现聊天功能

1、添加pom依赖 <!-- websocket --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、创建一个config文件夹&#xff0c;在config文件夹中创建…

广州租房房价分析

利用八爪鱼爬链家网上广州市租房房源数据&#xff0c;网址为https://gz.lianjia.com/zufang/&#xff0c;爬取字段为价格、租赁方式、房型、楼层、面积、朝向、地铁、小区、位置、经度、纬度等&#xff0c;保存到E盘数据分析课程设计文件夹下&#xff0c;存为“gz_zufang.csv”…

房价数据分析

文章目录 一、数据预处理1、删除多余列2、缺失值、异常值处理 二、 数据探索分析1、DistanceKM与房价关系2、14岁及以下比重与房价关系3、自驾实际值与房价关系4、65岁及以上比重与房价关系5、人口占比与房价关系 三、机器学习预测房价1、模型选择2、模型调参 四、总结 一、数据…

北京二手房房价分析(建模篇)

数据科学俱乐部 中国数据科学家社区 本篇将继续上一篇数据分析用Python分析北京二手房房价之后进行数据挖掘建模预测&#xff0c;这两部分构成了一个简单的完整项目。结合两篇文章通过数据分析和挖掘的方法可以达到二手房屋价格预测的效果。 下面从特征工程开始讲述。 特征工程…

我国主要城市2023年房价数据

房价是一个城市发展程度的重要体现&#xff0c;一个城市的房价越高通常代表这个城市越发达&#xff0c;对于人口的吸引力越大&#xff01;因此&#xff0c;房价数据是我们在各项城市研究中都非常常用的数据&#xff01; 本次我们为大家带来的是我国主要城市的房价数据&#xf…

分析天津市房价的空间因素影响

所有代码与解析 # -*- coding: utf-8 -*- """ Created on Thu Mar 4 16:23:30 2021author: 89344 """import numpy as np import pandas as pd import matplotlib.pyplot as plt import warnings warnings.filterwarnings(ignore) from bokeh.…

Python爬取天津房价并进行可视化

Python爬取天津房价并进行可视化 步骤代码 步骤 1.爬取网页信息 2.解析网页信息&#xff0c;获取需要的数据&#xff0c;存入CSV文件中 3.读取CSV文件&#xff0c;对数据进行处理&#xff0c;包括剔除异常值&#xff0c;空值等&#xff0c;进行可视化 代码 import requests …

房价概况:2013年2月26日天津各区县房价一览

2013年2月26日全市新建商品房交易373套、面积37502.8平方米&#xff0c;平均价格每平方米10504元。其中&#xff0c;住宅335套、面积34159.8平方米&#xff0c;平均价格每平方米9844元。二手住宅交易275套、面积22696.8平方米&#xff0c;平均价格每平方米8579元。

Spring实战----Taco Cloud(墨西哥煎玉米卷在线订购系统)

记录一下根据《Spring实战&#xff08;第五版&#xff09;》(人民邮电出版社)所学习的过程 目录 项目初始化 开发WEB应用 使用数据库 使用Spring Data JPA进行持久化数据 使用Spring Security保护Spring 自定义用户验证 项目初始化 New一个Project&#xff0c;选择Sprin…

C/C++字符串

一.C风格的字符串 1. char a[6] { h,e,l,l,o,\0 }; printf("%s", a);//hello#include<iostream> #include<string> using namespace std; int main() {char a[6] { h,e,l,l,o,\0 };char b[5] { h,e,l,l,o};//空间至少大一位留出\0位置char c[6] { h,e…

Qt输入窗口部件编程(一) QComboBox和QFontComboBox

文章目录 前言1、 Qt常用的输入窗口控件2、QFontComboBox 和 QComboBox控件编程2.1 控件简介2.1.1 QComboBox组合框2.1.2 QFontComboBox字体组合框 2.2 例程功能设计2.3 例程执行效果2.4 生成项目2.5 代码编辑2.5.1 修改项目文件_qcombobox.pro2.5.2 修改 main.cpp2.5.3 修改 w…