SpringBoot集成Thymeleaf模板引擎详解编程语言
2023-06-13 09:11:47 时间
简单介绍
目前在JavaEE领域有几中比较常用的模板引擎,分别是Jsp、Velocity、Freemarker、Thymeleaf,对Freemark语法不是特别熟悉,不过对于前端页面渲染效率来说,jsp其实还是最快的,Velocity次之。Thymeleaf虽然渲染效率不是很快,但是语法方面是比较轻巧的,Thymeleaf语法比Velocity轻巧,但是渲染效率不如Velocity
maven配置
因为引入了SpringBoot的parent工程,所以不需要写版本号
!-- Themeleaf -- dependency groupId org.springframework.boot /groupId artifactId spring-boot-starter-thymeleaf /artifactId /dependency
application.yml配置
#添加Thymeleaf配置 thymeleaf: cache: false prefix: classpath:/templates/ suffix: .html mode: HTML5 encoding: UTF-8 content-type: text/html
application.yml:
server: port: 8081 #logging: # config: classpath:logback_spring.xml.bat # level: # com.muses.taoshop: debug # path: /data/logs spring: datasource: # 主数据源 shop: url: jdbc:mysql://127.0.0.1:3306/taoshop?autoReconnect=true useUnicode=true characterEncoding=utf8 characterSetResults=utf8 useSSL=false username: root password: root driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource # 连接池设置 druid: initial-size: 5 min-idle: 5 max-active: 20 # 配置获取连接等待超时的时间 max-wait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 time-between-eviction-runs-millis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 min-evictable-idle-time-millis: 300000 # Oracle请使用select 1 from dual validation-query: SELECT x test-while-idle: true test-on-borrow: false test-on-return: false # 打开PSCache,并且指定每个连接上PSCache的大小 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,wall用于防火墙 filters: stat,wall,slf4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 use-global-data-source-stat: true # jpa: # database: mysql # hibernate: # show_sql: true # format_sql: true # ddl-auto: none # naming: # physical-strategy: org.hibernate.boot.entity.naming.PhysicalNamingStrategyStandardImpl # mvc: # view: # prefix: /WEB-INF/jsp/ # suffix: .jsp #添加Thymeleaf配置 thymeleaf: cache: false prefix: classpath:/templates/ suffix: .html mode: HTML5 encoding: UTF-8 content-type: text/html #Jedis配置 # jedis : # pool : # host : 127.0.0.1 # port : 6379 # password : redispassword # timeout : 0 # config : # maxTotal : 100 # maxIdle : 10 # maxWaitMillis : 100000
添加html文件
在resources资源文件夹下面新建一个templates文件夹,所有的html文件都丢在这里,静态资源文件也丢在resources资源文件夹下面
新建一个html文件,然后注意加上 html xmlns:th="http://www.thymeleaf.org"
注意Thymeleaf语法要求比较严格 meta charset="utf-8" ,不如这样写是不可以的,必须加上斜杠的, meta charset="utf-8" /
Thymeleaf简单例子
遍历后台数据
!--最新上架-- div div h3 最新上架 span 每天都有上新,每天都有惊喜 /span /h3 div div li th:each="item : ${items}" p a th:href="@{/portal/item/toDetail/+${item.spuId}+/+${item.skuId}}" img th:src="@{${item.imgPath}}" / /a /p p a th:href="@{/portal/item/toDetail/+${item.spuId}+/+${item.skuId}}" /a /p p a th:href="@{/portal/item/toDetail/+${item.spuId}+/+${item.skuId}}" th:text="${item.itemName}" /a /p p em th:text="${item.mPrice}" /em 元 /p /li /ul /div /div /div /div !--最新上架//--
引入文件
Thymeleaf引入另外一个html文件可以使用th:replace或者th:include,
!--topBar-- div th:replace="/top_bar :: .topBar" /div !--//topBar-- !--headerMain-- div th:replace="/header_main :: .headerMain" /div !--//headerMain-- !--headerNav-- div th:replace="/index_header_nav :: .headerNav" /div !--//headerNav--
Img便签src
img th:src="@{/static/images/rachange_ad.jpg}" / 链接 a 便签
静态资源使用
link th:href="@{/static/css/public.css}" rel="stylesheet" type="text/css" / link th:href="@{/static/css/index.css}" rel="stylesheet" type="text/css" / script type="text/javascript" th:src="@{/static/js/jquery-1.3.2.min.js}" /script script type="text/javascript" th:src="@{/static/js/html5.js}" /script script type="text/javascript" th:src="@{/static/js/popbox.js}" /script
给出一个html页面例子:
!DOCTYPE HTML html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" head meta charset="utf-8" / title 电商门户网站 /title link th:href="@{/static/css/public.css}" rel="stylesheet" type="text/css" / link th:href="@{/static/css/index.css}" rel="stylesheet" type="text/css" / script type="text/javascript" th:src="@{/static/js/jquery-1.3.2.min.js}" /script script type="text/javascript" th:src="@{/static/js/html5.js}" /script script type="text/javascript" th:src="@{/static/js/popbox.js}" /script style type="text/css" .item-list { display: none; position: absolute; width: 705px; min-height: 200px; _height: 200px; background: #FFF; left: 198px; box-shadow: 0px 0px 10px #DDDDDD; border: 1px solid #DDD; top: 3px; z-index: 1000000; } /* Remove Float */ .clear { display: block; height: 0; overflow: hidden; clear: both; } .clearfix:after { content: /20; display: block; height: 0; clear: both; } .clearfix { *zoom:1; .hover { position: relative; z-index: 1000000000; background: #FFF; border-color: #DDD; border-width: 1px 0px; border-style: solid; } /style /head body !--header-- header !--topBar-- div th:replace="/top_bar :: .topBar" /div !--//topBar-- !--headerMain-- div th:replace="/header_main :: .headerMain" /div !--//headerMain-- !--headerNav-- div th:replace="/index_header_nav :: .headerNav" /div !--//headerNav-- /header !--//header-- !--container-- div div !--banner-- div div li a href="#" img width="727" height="350" th:src="@{/static/images/banner_970x355.jpg}" / /a /li li a href="#" img width="727" height="350" th:src="@{/static/images/banner_970x355.jpg}" / /a /li li a href="#" img width="727" height="350" th:src="@{/static/images/banner_970x355.jpg}" / /a /li /ul /div li /li li /li li /li /ul /div !--//banner-- !--快捷充值-- div div div h2 em /em 话费充值 /h2 /div div div label 手机号: /label input placeholder="支持电信" type="text" / label 充值方式: /label label input type="radio" / 电信充值卡 /label label input type="radio" / 银行卡 /label div a href="#" 立即充值 /a /div /div div img th:src="@{/static/images/rachange_ad.jpg}" / /div /div /div /div !--//快捷充值-- div /div !--最新上架-- div div h3 最新上架 span 每天都有上新,每天都有惊喜 /span /h3 div div li th:each="item : ${items}" p a th:href="@{/portal/item/toDetail/+${item.spuId}+/+${item.skuId}}" img th:src="@{${item.imgPath}}" / /a /p p a th:href="@{/portal/item/toDetail/+${item.spuId}+/+${item.skuId}}" /a /p p a th:href="@{/portal/item/toDetail/+${item.spuId}+/+${item.skuId}}" th:text="${item.itemName}" /a /p p em th:text="${item.mPrice}" /em 元 /p /li /ul /div /div /div /div !--最新上架//-- /div /div !--//container-- !--footer-- footer th:replace="footer :: .footer" /footer !--//footer-- script type="text/javascript" //banner $(document).ready(function(){ var demo = $(".banner"); var btn = $(".banner-btn li"); var slide = $(".banner-img ul"); var slideItem = slide.find("li"); var c = 0, speed = 4000 , t; btn.each(function(number){ $(this).click(function(){ $(this).addClass("current").siblings().removeClass("current"); slide.animate({"left":-slideItem.width()*number},300); c = number; }); }); if(btn.size() 1){ autoSlide(); function timedCount() c = c + 1; if(c =btn.size())c = 0; btn.eq(c).click(); function autoSlide(){ t = setInterval(function(){timedCount();},speed); //鼠标移入停止播放 demo.mouseover(function(){ clearInterval(t); }); demo.mouseout(function(){ autoSlide(); }); }); /script /body /html
代码取自个人的开源项目:https://github.com/u014427391/taoshop,有需要可以参考
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17044.html
cjavamysqloraclexml相关文章
- springboot启动原理总结_Springboot启动流程
- springboot eureka集群部署_springmvc框架原理
- Spring学习笔记(二十一)——规范开发:SpringBoot表单验证、AOP切面编程、统一返回结果和异常处理
- Spring学习笔记(二十七)——springboot集成MyBatis-Plus学习总结
- Spring学习笔记(三十三)——SpringBoot集成Swagger
- springboot上传文件显示上传进度[通俗易懂]
- springboot mysql事物_SpringBoot事务详细简介[通俗易懂]
- SpringBoot使用MyBatisPlus一键CRUD
- SpringBoot项目中集成第三方登录功能
- springboot快速入门
- 实战:第十四章:Springboot集成jsp页面报404四种解决方案
- springboot项目启动原理_spring原理和实现机制
- springboot集成微信支付V3(小程序)
- Java项目分享-基于 SpringBoot + Vue 的智能停车场管理平台
- SpringBoot之引导类[Application]
- springboot详细讲解_Springboot项目
- springboot多环境配置文件_Springboot教程
- springboot手动控制mysql事务
- springboot集成sa-token(默认配置)
- SpringBoot 使用 FTP 操作文件
- SpringBoot 实现万能文件在线预览,已开源,真香!!
- 3-2. SpringBoot项目集成【用户身份认证】实战 【实战核心篇】基于JWT生成和校验Token
- 【微服务环境配置JWT】SpringBoot中配置jwt
- SpringBoot自动装配原理分析,手写starter组件
- SpringBoot学习——腾讯云文件上传+删除
- SpringBoot 集成Redis 过程
- SpringBoot集成Quartz实现定时器详解编程语言
- SpringMVC和Springboot的区别详解编程语言