【分布式实战-高级】nginx实现动静分离与thymeleaf名称空间使用

一、Nginx实现动静分离

1、动静分离介绍

有时候使用前后端分离项目,有些细节不太容易处理。

实现动静分离,释放微服务压力。静态资源直接去nginx获取。

静:主要是图片、文件、css、js等静态资源。(以实际文件存在的方式)

动:服务器需要处理的请求。(需要java代码处理的请求)

在这里插入图片描述

动静分离可以使得静态文件快速访问。

把静态资源放在nginx中,直接过滤静态请求。只有动态请求才会传到网关。

在这里插入图片描述

  1. 以后将所有项目的静态资源,都应该放在nginx里面。
  2. 规则:/static/***所有请求都由nginx直接返回。
2、用nginx实现动静分离
  1. 在nginx的html目录下新建目录 static
  2. 所有html页面的全部资源路径都需要加上 static/
  3. nginx添加配置

在这里插入图片描述

  1. 重启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的缓存)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值