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 ...
随机推荐
- CentOS7搭建SFTP服务
CentOS7.5环境下搭建SFTP服务. 创建用户组及用户 创建用户组 # groupadd sftpgroup 创建用户 $ useradd -g sftpgroup -s /sbin/nolog ...
- Windows10:虚拟机开机导致win10黑屏、蓝屏
管理员身份打开cmd(命令提示符) 执行如下5个命令 netsh winsock reset net stop VMAuthdService net start VMAuthdService net ...
- Java:代码高效优化
本文转自阿里技术站,感谢阿里前辈提供的技术知识,微信关注 "阿里技术" 公众号即可实时学习. 1.常量&变量 1.1.直接赋值常量值,禁止声明新对象 直接赋值常量值,只是创 ...
- Netty实现对Websocket的支持
一.WebSocket的简介及优势 WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准.WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的 ...
- 大厂高级工程师面试必问系列:Java动态代理机制和实现原理详解
代理模式 Java动态代理运用了设计模式中常用的代理模式 代理模式: 目的就是为其他对象提供一个代理用来控制对某个真实对象的访问 代理类的作用: 为委托类预处理消息 过滤消息并转发消息 进行消息被委托 ...
- [刘阳Java]_EasyUI环境搭建_第2讲
在EasyUI的第1讲中我们介绍了学习EasyUI能够做什么,这次我们得快速搭建一个EasyUI环境,来测试一下它的运行效果 1.jQuery EasyUI环境搭建 <script type=& ...
- python -- 程序异常与调试(识别异常)
一.识别异常 程序中出现的错误又称为异常.异常通常分为两大类:编译错误和运行错误. 如下源码是已经修改: # -----------------------------------------# 编程 ...
- 在使用TCP协议进行消息发送时,对消息分帧
成帧与解析 阅读 <java TCP/IP Socket 编程>第三章笔记 成帧技术(frame)是解决如何在接收端定位消息的首尾位置的问题.在进行数据收发时,必须指定消息接收者如何确定何 ...
- P5296 [北京省选集训2019]生成树计数
P5296 [北京省选集训2019]生成树计数 题意 求一个带权无向图所有生成树边权和的 \(k\) 次方的和. 思路 首先有一个结论:\(a^i\) 的 EGF 卷 \(b^i\) 的 EGF 等于 ...
- springboot+mybatis+mysql 利用mybatis自动生成sql语句
工具和环境 idea,mysql,JDK1.8 效果图如下 结构图如下 java resources sql文件 /* Navicat MySQL Data Transfer Source Serve ...