Thymeleaf页面静态化技术
Teymeleaf的使用
案例一:springboot搭建Thymeleaf
1、导入依赖
2、新建html页面模板
3、新建前端控制层Controller
4、新建启动类
1、导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chawaner</groupId>
<artifactId>springboot-thymeleaf</artifactId>
<version>1.0-SNAPSHOT</version>
<description>Thymeleaf案例操作</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
<dependencies>
<!--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>
</dependencies>
</project>
2、新建模板:demo1.html
<!DOCTYPE html>
<!--引入Thymeleaf标签-->
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Thymeleaf模板引擎</title>
</head>
<body>
<!--
需要在指定的Thymeleaf的标签内,使用Thymeleaf语法
th:text="" 输出文本内容
-->
<div th:text="${message}"></div>
</body>
</html>
3、新建前端控制器:TestController
/**
* @Author TeaBowl
* @Date 2020/12/15 17:03
* @Version 1.0
* Thymeleaf模板引擎
*/
@Controller
@RequestMapping(value = "/test")
public class TestController {
@GetMapping(value = "/hello")
public String hello(Model model){
model.addAttribute("message","hello Thymeleaf!");
return "demo1";
}
}
4、新建启动类:ThymeleafApplication
/**
* @Author TeaBowl
* @Date 2020/12/15 17:22
* @Version 1.0
*/
@SpringBootApplication
public class ThymeleafApplication {
public static void main(String[] args) {
SpringApplication.run(ThymeleafApplication.class,args);
}
}
5、测试
a.运行启动类ThymeleafApplication
b.打开浏览器:localhost:8080/test/hello
浏览器页面显示:hello Thymeleaf!
c.测试运行成功!
6、如何证明模板已经生效?
在浏览器显示页面上右键查看源码,
<!DOCTYPE html>
<!--引入Thymeleaf标签-->
<html>
<head>
<meta charset="UTF-8">
<title>Thymeleaf模板引擎</title>
</head>
<body>
<!--
需要在指定的Thymeleaf的标签内,使用Thymeleaf语法
th:text="" 输出文本内容
-->
<div>hello Thymeleaf!</div>
</body>
</html>
7、关闭缓存
创建application.yml
spring:
thymeleaf:
cache: false #模板缓存
8、thymeleaf基本语法
- 输出文本内容
<div th:text="${message}"></div>
- th:action 指定表单提交的路径
<div>
<form id="login-form" th:action="@{/test/hello}">
<button>提交</button>
</form>
</div>
- th:each循环标签
首先,创建一个User类
/**
* @Author TeaBowl
* @Date 2020/12/16 15:55
* @Version 1.0
*/
@Data //省略setter&getter
@NoArgsConstructor //无参构造
@AllArgsConstructor //全参构造
public class User {
private Integer id;
private String name;
private String address;
}
然后,在前端控制器TestController中创建List集合,添加数据并存入到Model;
/**
* @Author TeaBowl
* @Date 2020/12/15 17:03
* @Version 1.0
* Thymeleaf模板引擎
*/
@Controller
@RequestMapping(value = "/test")
public class TestController {
@GetMapping(value = "/hello")
public String hello(Model model){
model.addAttribute("message","hello Thymeleaf!");
//创建一个List<User>,并将List<User>存入到Model中,到页面使用Thymeleaf标签显示
List<User> users = new ArrayList<>();
users.add(new User(1,"张三","深圳"));
users.add(new User(2,"李四","北京"));
users.add(new User(3,"王五","武汉"));
model.addAttribute("users",users);
return "demo1";
}
}
最后,从前端页面取数据
<div>
th:each循环标签
<table>
<tr>
<td>编号</td>
<td>ID</td>
<td>NAME</td>
<td>ADDRESS</td>
</tr>
<!--
循环
user,userSta:${users}
user接收users对象
userSta当前循环对象的状态
-->
<tr th:each="user,userSta:${users}">
<td th:text="${userSta.count}"></td>
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.address}"></td>
</tr>
</table>
</div>
9、Map输出
首先,在TestController中定义一个Map对象
/**
* @Author TeaBowl
* @Date 2020/12/15 17:03
* @Version 1.0
* Thymeleaf模板引擎
*/
@Controller
@RequestMapping(value = "/test")
public class TestController {
@GetMapping(value = "/hello")
public String hello(Model model){
model.addAttribute("message","hello Thymeleaf!");
//创建一个List<User>,并将List<User>存入到Model中,到页面使用Thymeleaf标签显示
List<User> users = new ArrayList<>();
users.add(new User(1,"张三","深圳"));
users.add(new User(2,"李四","北京"));
users.add(new User(3,"王五","武汉"));
model.addAttribute("users",users);
//Map定义,存入Model
Map<String,Object> dataMap = new HashMap<String,Object>();
dataMap.put("No","123");
dataMap.put("address","深圳");
model.addAttribute("dataMap",dataMap);
return "demo1";
}
}
然后,从前端页面取数据
<div>
读取Map的两种方式<br>
1、知道Map的Key,直接根据Key获取数据<br>
3、不知道Map的Key,使用循环的方式获取Key,然后获取数<br>
<h3>方式一</h3>
<div>
获取Key=No的值:<span th:text="${dataMap.No}"></span><br>
获取Key=Address的值:<span th:text="${dataMap.Address}"></span>
</div>
<h3>方式二</h3>
<div th:each="m:${dataMap}">
<span th:text="${m.key}"></span>:<span th:text="${m.value}"></span>
</div>
</div>
10、Data日期输出
首先,在后台创建日期
/**
* @Author TeaBowl
* @Date 2020/12/15 17:03
* @Version 1.0
* Thymeleaf模板引擎
*/
@Controller
@RequestMapping(value = "/test")
public class TestController {
@GetMapping(value = "/hello")
public String hello(Model model){
model.addAttribute("message","hello Thymeleaf!");
//创建一个List<User>,并将List<User>存入到Model中,到页面使用Thymeleaf标签显示
List<User> users = new ArrayList<>();
users.add(new User(1,"张三","深圳"));
users.add(new User(2,"李四","北京"));
users.add(new User(3,"王五","武汉"));
model.addAttribute("users",users);
//Map定义,存入Model
Map<String,Object> dataMap = new HashMap<String,Object>();
dataMap.put("No","123");
dataMap.put("Address","深圳");
model.addAttribute("dataMap",dataMap);
//创建日期,存入Model
model.addAttribute("Now",new Date());
return "demo1";
}
}
然后,从前端页面取数据
<div>
Data数据获取
format参数:对象,输出格式
<div>
<span th:text="${#dates.format(now,'yyyy-MM-dd HH:mm:ss')}"></span>
</div>
</div>
11、if条件
首先,在后台写数据,存入Model
//if条件,存入Model
model.addAttribute("age",22);
然后,在前端页面写条件判断
<div>
if条件判断,unless表示条件不成立时
<div>
<span th:if="${age>=18}">成年人</span>
<span th:unless="${age<18}">成年人</span>
</div>
</div>
12、th:fragment 定义一个模块
新建一个模块:footer.html
<!DOCTYPE html>
<html lang="en">
<!--引入Thymeleaf标签-->
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>当作一个模块</title>
</head>
<body>
<!--定义一个模块,命名为copy-->
<div id="C" th:fragment="copy">
关于我们<br>
</div>
</body>
</html>
然后,把定义好的模块引入到前端页面
<div>
引入模块footer<br>
th:include="footer::copy"引入footer页面里的copy
<div>
<div id="A" th:include="footer::copy"></div>
</div>
</div>
Thymeleaf页面静态化技术的更多相关文章
- php页面静态化技术;学习笔记
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 页面静态化技术Freemarker技术的介绍及使用实例.
一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...
- java秒杀系列(2)- 页面静态化技术
前言 通过代码片段分别介绍服务端渲染.客户端渲染.对象缓存三种方式的写法. 代码片段仅供参考,具体实现需要根据业务场景自行适配,但思想都是一样. 一.服务端渲染方式 1.接口返回html页面的设置 @ ...
- 高性能Java Web 页面静态化技术(原创)
package com.yancms.util; import java.io.*; import org.apache.commons.httpclient.*; import org.apache ...
- 高性能Java Web 页面静态化技术
package com.yancms.util; import java.io.*; import org.apache.commons.httpclient.*; import org.apache ...
- Freemarker页面静态化技术,activemq监听页面变动
初步理解: 架构优化: 静态页面的访问速度优于从缓存获取数据的动态页面的访问速度: Freemarker: 导包 模板:hello.ftl <!DOCTYPE html> <html ...
- Freemarker 页面静态化技术使用入门案例
在访问 新闻.活动.商品 详情页面时, 路径可以是 xx[id].html, 服务器端根据请求 id, 动态生成 html 网页,下次访问数据时,无需再查询数据,直接将 html 静态页面返回.这样一 ...
- Django框架开发web网站的网页优化—页面静态化
网站优化-页面静态化 1)概念 提前将页面所用到的数据从数据库查询出来,然后生成一个静态页面,之后用户来访问的时候,直接返回静态页面. 举例:首页静态化:获取首页用到的数据表中的数据,生成静态首页in ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)
页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ① 配置php.ini ...
随机推荐
- 资源:VMware秘钥许可证
一. 激活密钥 YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8 UG5J2-0ME12-M89WY-NPWXX-WQH88 UA5DR-2ZD4H-089FY-6YQ5T-YPRX6 GA ...
- 使用RestTemplate发送post请求,请求头中封装参数
最近使用RestTemplate发送post请求,遇到了很多问题,如转换httpMessage失败.中文乱码等,调了好久才找到下面较为简便的方法: RestTemplate restTemplate ...
- MQTT 2——服务端安装与客户端测试
本篇记录一下MQTT服务器,客户端,JAVA客户端的选择开发与测试 MQTT服务端选择与安装过程:MQTT客户端测试工具安装与测试:MQTT JAVA客户端的选择与开发,测试 MQTT服务器选择与安装 ...
- Spark—local模式环境搭建
Spark--local模式环境搭建 一.Spark运行模式介绍 1.本地模式(loca模式):spark单机运行,一般用户测试和开发使用 2.Standalone模式:构建一个主从结构(Master ...
- Java电话薄项目(Java基础入门)
面向对象程序设计(Java基础) 1.项目介绍: 该项目能够实现对电话薄的添加,查找,修改,删除,排序等基本操作. 用户进入系统中首先进入主菜单中,在主菜单中可以选择相应的操作,用户可以选择每项操作前 ...
- python的代码块和if条件表达式
代码块和if条件表达式 代码块 什么是代码块 以冒号作为开始,用缩进来划分作用域. 在之后的学习当中,使用if条件语句.for.while循环语句.定义函数.定义类等诸多地方都会涵盖代码的概念. 什么 ...
- 「干货」面试官问我如何快速搜索10万个矩形?——我说RBush
「干货」面试官问我如何快速搜索10万个矩形?--我说RBUSH 前言 亲爱的coder们,我又来了,一个喜欢图形的程序员,前几篇文章一直都在教大家怎么画地图.画折线图.画烟花,难道图形就是这样嘛,当 ...
- 第五篇 -- git基础教程
git(权威指南)基础教程第一章 git -- gitbash -- cygwin git service:gitolite 两个的目录不同 gitbash ~ windows/home/admini ...
- SpringCloud升级之路2020.0.x版-1.背景
本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~ Spring ...
- 深入刨析tomcat 之---第4篇 tomcat4.0连接池 实现原理
writedby 张艳涛