1.1 Thymeleaf是什么

Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至纯文本。

1.2 Thymeleaf能处理哪些模版

开箱即用,Thymeleaf可让处理六种类型的模板,每种类型的模板称为模板模式:

  • HTMl
  • XML
  • TEXT
  • JAVASCRIPT
  • CSS
  • RAW

也不做太多介绍不会就去看看官方文档,这里我只用了HTML
HTML模板模式将允许任何类型的HTML输入,包括HTML5,HTML 4和XHTML。Thymeleaf在html5非验证模式和验证模式下都能正确执行,并且在输出结果中最大程度的遵循模板代码/结构。

1.3 HTML怎么应用Thymeleaf

创建一个maven项目导入springboot的子项目:

    <!-- springboot依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.10.RELEASE</version></parent>

然后导入Thymeleaf和web依赖包:

     <!-- Web模块:spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- thymeleaf依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

关于使用springboot的thymeleaf模板时默认会对HTML进行严格的检查,导致当标签没有闭合时就会通不过。nekohtml这个依赖可以解决这一问题。

修改pom文件,添加依赖
<!-- nekohtml依赖 -->
<dependency><groupId>nekohtml</groupId><artifactId>nekohtml</artifactId><version>1.9.6.2</version>
</dependency>
修改配置yml
spring:thymeleaf:cache: false #是否启用模板缓存  开发环境不用所以使用false 默认为truemode: LEGACYHTML5 #回避HTML进行严格的检查的配置,需要提前引入nekohtml依赖prefix: classpath:/public/  #在构建URL时添加前缀以查看名称的前缀  ,放网页的地方
server: port: 8888

---------------------------------------------------------------------------------- 万恶的分割线-----------------------------------------------------------------------------------

前面算入坑指南~~~~这些都是简单配置和上一篇连接起来的运用如下:

上一篇

模型:

pom依赖:

    <!--Maven默认依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.10.RELEASE</version></parent><dependencies><!-- Web依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- solr依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-solr</artifactId></dependency><!-- 小辣椒依赖 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><!-- thymeleaf依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- 使用springboot的thymeleaf模板时默认会对HTML进行严格的检查,导致当你的标签没有闭合时就会通不过。nekohtml这个依赖可以解决这一问题。 --><dependency><groupId>nekohtml</groupId><artifactId>nekohtml</artifactId><version>1.9.6.2</version></dependency><!-- 开发者工具集 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency></dependencies>

控制层:

package cn.lp.controller;import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;import cn.lp.dao.PersonDao;
import cn.lp.entity.Person;
import cn.lp.entity.User;
/*** Model可直接传输数据,HttpServletRequest还需转接session会话控制接收* @author Administrator**/
@Controller
public class ThyController {@GetMapping("/getIndex")public String getIndex(Model model,HttpServletRequest request) {Map map=new HashMap();map.put("id", 1);map.put("name", "刘皇叔");model.addAttribute("user",map);User user=new User();user.setUserId("520");user.setUserName("跳跳糖");request.getSession().setAttribute("user1",user);return "index";}@Autowiredprivate PersonDao pd;@GetMapping("/getposolr")public String findByDescx(String descx,Model model) {List<Person> personList = pd.findByDesc(descx);model.addAttribute("personList",personList);return "posolr";}
}

数据访问层dao

package cn.lp.dao;import java.util.List;import org.springframework.data.solr.repository.SolrCrudRepository;import cn.lp.entity.Person;public interface PersonDao extends SolrCrudRepository<Person, String> {public List<Person> findByDesc(String keyword);}

实体层entity 俩个一个是简单运用 一个是调用solr完成一个表格

package cn.lp.entity;import org.apache.solr.client.solrj.beans.Field;
import org.springframework.data.solr.core.mapping.SolrDocument;import lombok.Data;
/*** @Field指定core里的参数* @SolrDocument(solrCoreName="mycore")指定core(核)* @author Administrator*  我只把后缀为_ik的做了分词*/
@Data
@SolrDocument(solrCoreName="mycore")
public class Person {private String id;@Field("country_ik")private String  country;@Field("name_ik")private String name;@Field("desc_ik")private String desc;@Field("provice_ik")private String provice;@Field("city_ik")private String city;@Field("age_i")private String age;
}
package cn.lp.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;@Data//get,set方法
@NoArgsConstructor//无参的构造方法
@AllArgsConstructor//带参的构造方法
@ToString//toString方法
public class User {private String  userId;private String userName;}

main方法

package cn.lp;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class ThyMain {//thymeleaf是从控制层经过,扫描html页面是否有th:标签,含有的话就使用thymeleaf的方法并顶替里面原始的值public static void main(String[] args) {SpringApplication.run(ThyMain.class, args);       }
}

index.html页面 简单运用方法的页面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>${sec}<input name="usesName" th:name="${sex}"/><!--  th:text会转译所以得出的值是一个字符串th:utext不转译,得出的值是一串html标签 --><div th:text="'<button>天天路过</button>'">摇摇晃晃    </div><div th:utext="'<button>天天路过</button>'">摇头晃脑</div><!-- 可以从控制层中获取到参数使用会话属性  并且还可以运用java代码 --><div th:utext="name等于+${user.name}">摇摇欲坠</div><div th:utext="id等于+${user.id}">英勇无畏</div><div th:utext="user等于+${user}">无畏</div><!-- 将获得的数据用变量接收,只在该div生效  --><div th:object="${user}">user对象用*id:<p th:text="*{id}"></p>user对象用*name:<p th:text="*{name}"></p>"</div>用session调用:<div th:text="${session.user1.userId}"></div>用sesion调用属性的方法:<p th:text="${session.user1.toString()}"></p>三目运算法:    <td th:text="${session.user1.userId}==520 ? true : false">yes</td></body>
</html>

posolr.html 调用solr做出的表格页面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript"></script>
</head>
<body><!-- 使用模板 --><div th:include="template :: copy"></div><script>alert($)</script><form action="getposolr" method="get"><input id="keyword" type="text" name="descx"><input type="submit" value="提交"/>
</form><table><tr><th>国家</th><th>城市</th><th>姓名</th><th>描述</th><th></th></tr><!-- 遍历 迭代器  循环   三目判断使用风格   --><tr th:each="List,itf:${personList}" th:style="${itf.odd}?'background-color:red':'background-color:aqua'"><td th:text="${List.country}"></td><td th:text="${List.provice}"></td><td th:text="${List.name}"></td><td th:text="${List.desc}"></td></tr>       </table></body>
</html>

template.html 一个模板的页面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 我是一个小模板  可以放js 类似于父项目 --><div th:fragment="copy"> 1----2-----3-----4----5----6<script>alert('我使用了alert')</script><script type="text/javascript" src="js/jquery-3.3.1.js"></script></div>
</body>
</html>

application.yml配置文件

spring:thymeleaf:#是否启用模板缓存  开发环境不用所以使用false 默认为truecache: false#回避HTML进行严格的检查的配置,需要提前引入nekohtml依赖mode: LEGACYHTML5#在构建URL时添加前缀以查看名称的前缀  ,放网页的地方prefix: classpath:/public/data: solr: host: http://192.168.146.133:8983/solr
server: port: 8888  

执行效果:
调用solr的页面

简单运用页面:

没了 水完了

thymeleaf 必须要经过控制层才能有效 直接运行无效

spring boot整合Thymeleaf简单运用与入坑水贴相关推荐

  1. java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板

    点击"牧码小子"关注,和众多大牛一起成长! 关注后,后台回复 java ,领取松哥为你精心准备的技术干货! 虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在 ...

  2. Spring Boot整合Thymeleaf模板引擎

    转载自 Spring Boot整合Thymeleaf模板引擎 什么是Thymeleaf Thymeleaf是一款用于渲染XML.XHTML.HTML5内容的模板引擎.类似Velocity,FreeMa ...

  3. 解决使用Spring Boot上传图片路径错误问题【入坑之一】

    推荐一个性价比不错的虚拟机:https://blog.csdn.net/qqtingshuo/article/details/82964537 1.问题描述 关键字:  Spring Boot 1.3 ...

  4. Spring Boot整合thymeleaf异常 —— 无法通过th:text=“${xxx}“取到值的解决方法

    问题 前端页面 index.html ${msg}处爆红,无法取到值. <!doctype html><!--注意:引入thymeleaf的名称空间--> <html l ...

  5. Spring Boot整合thymeleaf

    转载自面皮大师的简书 https://www.jianshu.com/p/8d2cc7207fb2

  6. freemarker ftl模板_Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

    今天来聊聊 Spring Boot 整合 Freemarker. Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎.通过 Freemarker 模版,我们可以将数据渲染成 HTML ...

  7. Spring Boot 整合 FreeMarker 实例

    前言 在之前的文章Spring Boot 整合 Thymeleaf中,我们学习了如何将模板 Thymeleaf 整合到 Spring Boot 中,那今天我们就来看看,另一个老牌的开源免费模板引擎 - ...

  8. MongoDB简单入门篇及其Spring Boot整合

    参考视频 ① MongoDB简介 简介 MongoDB是为快速开发互联网Web应用而设计的数据库系统 MongoDB的设计目标是极简.灵活. 作为Web应用栈的一部分 MongoDB是No SQL数据 ...

  9. spring boot 整合 spring cache 简单使用

    spring boot 整合 spring cache 简单使用 spring cache简介 使用spring cache spring cache简介 Spring 3.1起,提供了基于注解的对C ...

最新文章

  1. 【22,23节】Django的GET和POST属性笔记
  2. python多边形裁剪
  3. myeclipse6.0.1(内置了eclipse)安装及其配置
  4. resnet50能用cpu跑吗_2020年12月1日更新。性价比最高入门游戏CPU--intel 10100F装机配置推荐。...
  5. ruby中!!_Ruby反向! 功能
  6. zabbix html使用c语言写的,zabbix 自定义LLD
  7. 计算机系统-电路设计03-或门电路
  8. 攻防世界reverse新手练习
  9. 用深度学习进行语音识别为什么还要算mfcc?
  10. Tensor flow 实战Google深度学习框架 笔记摘要Pfour
  11. 在cmd命令行运行一个python脚本
  12. 【TSP问题】基于人工鱼群算法求解TSP问题matlab 源码
  13. HTML命名空间的使用
  14. 使用vue-cropper
  15. 在程序员职业中,外包的薪资真的更高吗?
  16. 联想拯救者笔记本电脑Fn键失效,Fn功能相反,开关FnLock
  17. 编译原理:flex与bison--从0到1完成一个编译器(sample语言)①
  18. 技术人员帮助电商运营选择最合适的物流快递运输公司的5个切入点
  19. 将ip地址转换成一个长整型(日志处理)
  20. 机器学习_深度学习毕设题目汇总——肿瘤

热门文章

  1. Qt 模仿QQ截图 动态吸附直线
  2. PCB layout有DRC为什么还要用CAM和DFM检查?
  3. 企业软文营销依靠情感故事打通最后防线
  4. 放大镜 讲课_《放大镜》教学设计
  5. framework是什么
  6. 史上最经典的git教程
  7. 三星s8怎么分屏操作_三星 Galaxy Z Fold 2,这才是 2020 年折叠屏手机该有的样子
  8. 【深度解析】第三方支付的分类、接口与支付流程
  9. HTC G8 wildfire第一次刷机
  10. 2018百度运维岗秋招面试题:36匹马6跑道快速找出前三名