一、Nginx实现动静分离
1、动静分离介绍
有时候使用前后端分离项目,有些细节不太容易处理。
实现动静分离,释放微服务压力。静态资源直接去nginx获取。
静:主要是图片、文件、css、js等静态资源。(以实际文件存在的方式)
动:服务器需要处理的请求。(需要java代码处理的请求)
动静分离可以使得静态文件快速访问。
把静态资源放在nginx中,直接过滤静态请求。只有动态请求才会传到网关。
- 以后将所有项目的静态资源,都应该放在nginx里面。
- 规则:/static/***所有请求都由nginx直接返回。
2、用nginx实现动静分离
- 在nginx的html目录下新建目录 static
- 所有html页面的全部资源路径都需要加上 static/
- nginx添加配置
- 重启nginx
二、Thymeleaf模板引擎
1、Thymeleaf模板引擎优缺点
优点:它是一个自然化语言,它编写的页面,前端可以直接使用,修改也行,方便前后端人员的分工合作。
缺点:性能比其他的模板引擎稍微低一点,但是在生产环境开启了相应的缓存功能,它的性能也是非常高的。
2、Thymeleaf的内容
1)常用表达式
• ${...}变量表达式。
• *{ .. . } 选择表达式。
• #{...}消息文字表达式。
• @{} 链接url 表达式。
• #maps 工具对象表达式。
2)常用标签
• th:action 定义后台控制器路径。
• th:each 1,盾环语-句。
• th:field 表单字段绑定。
• th:href 定义超链接。
• th:id div 标签中的ID 声明,类似HTML 标签中的归属性。
• th:if 条件判断语句。
• th:include 布局标签,替换内容到引入文件。
• th :企agment 布局标签,定义一个代码片段,方便其他地方引用。
• th:object 替换对象。
• th:src 图片类地址引入。
• th:text 显示文本。
• th:value 属性赋值。
3)常用函数
• #dates 日期函数。
• #lists 列表函数。
• #arrays 数组函数。
• #strings 字符串函数。
• #numbers 幸生字函捷生。
• #ca lendars 日历函数。
• #objects 对象函数。
• #bools 逻辑函数。
3、初始化并使用thymeleaf
1)引入依赖
<!-- 模板引擎thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2)关闭缓存
关闭缓存后可以刷新实时看到数据,在开发的时候用,否则每次测试都将重启服务,删掉缓存。
###ThymeLeaf配置
spring:
thymeleaf:
#模板的模式,支持 HTML, XML TEXT JAVASCRIPT
mode: HTML5
#编码 可不用配置
encoding: UTF-8
#内容类别,可不用配置
content-type: text/html
#开发配置为false,避免修改模板还要重启服务器
cache: false
#配置模板路径,默认是templates,可以不用配置
prefix: classpath:/templates
3)静态资源放置
静态资源都放在static文件夹下,就可以按照路径直接访问
静态资源可以放置的位置:
4)页面资源放置
页面放在templates下,templates下的index页面为默认页面。启动项目后全部页面都可以直接被访问。
3、新建一个web包,使用thymeleaf
web包用来放页面跳转的接口
package pers.tangxz.learn.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* @Info:
* @Author: 唐小尊
* @Date: 2020/09/27 07:41
*/
@Controller
public class IndexWeb {
@GetMapping(value = "/test")
public ModelAndView test() {
ModelAndView mv = new ModelAndView();
mv.addObject("name","唐小尊");
mv.setViewName("/show.html");
return mv;
}
}
在resources目录的templates目录下创建一个show.html,内容如下
<!DOCTYPE html>
<!--引入名称空间-->
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>hello <span th:text="${name}"></span>,你今天可真帅!!</h1>
</body>
</html>
4、整合Dev-Tools
整合Dev-Tools,页面修改不重启服务器实时更新。
1)引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-devtools</artifactId>
<!--可选的,一定要写一个true,有这个才算是导入了-->
<optional>true</optional>
</dependency>
2)每次修改页面之后,运行Build Project(前提是必须先关闭thymeleaf的缓存)