gulimall-首页渲染-nginx域名搭建

首页渲染与nginx域名搭建

  • 前言
  • 一、首页
    • 1.1 整合 thymeleaf
    • 1.2 整合 dev-tools
    • 1.3 渲染分类数据
  • 二、Nginx 域名搭建
    • 2.1 搭建域名访问环境
    • 2.2 nginx 配置文件
    • 2.3 总结

前言

本文继续记录B站谷粒商城项目视频 P136-140 的内容,做到知识点的梳理和总结的作用。

一、首页

  1. 项目微服务介绍

在这里插入图片描述

将静态资源保存在 nginx 的 index 目录下,所有请求过来先经过 nginx 服务器,根据 nginx 的动静分离特点静态资源直接返回数据,动态资源再经过服务器处理后返回,达到减轻每个微服务的压力,提升服务器的吞吐量。

1.1 整合 thymeleaf

  1. 导入依赖
<!-- 模板引擎 thymeleaf-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  1. 将静态资源导入到 product 项目中,静态资源都放在 static 文件夹下就可以按照路径直接访问,页面放在 templates 下,直接访问,SpringBoot 访问项目的时候,默认会找 index。
  1. 关闭缓存
spring:thymeleaf:cache: false
  1. 访问项目效果如下图

在这里插入图片描述

1.2 整合 dev-tools

  1. 首页渲染一级分类
@GetMapping({"/","/index.html"})
public String indexPage(Model model){//Model是springmvc里面的,它会帮我们把值放到请求域中//1.查出所有的1级分类List<CategoryEntity> categoryEntities = categoryService.getLevel1Categorys();//视图解析器进行拼串;//classpath:/templates/ +返回值+ .htmlmodel.addAttribute("categorys",categoryEntities);return "index";
}
  1. 查询所有一级分类数据
@Override
public List<CategoryEntity> getLevel1Categorys() {log.info("getLevel1Categories.....");//要得到集合 所以用selectListlong startTime = System.currentTimeMillis();List<CategoryEntity> categoryEntities =baseMapper.selectList(new QueryWrapper<CategoryEntity>().eq("parent_cid", 0));long endTime = System.currentTimeMillis();log.info("消耗时间:{}",(endTime - startTime));return categoryEntities;
}
  1. dev-tools工具,调整页面数据的时候,我们不希望通过项目重启的方式,就可以使用dev-tools工具,CTRL+F9 即可刷新界面。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
</dependency>

1.3 渲染分类数据

  1. 根据 JSON 数据封装 VO
/*** 2级分类vo*/
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Catelog2Vo {//一级父分类(这里我们以2级菜单为中心写的vo)private String catalog1Id;//三级子分类private List<Catelog3Vo> catalog3List;private String id;private String name;/*** 3级分类vo*/@NoArgsConstructor@AllArgsConstructor@Datapublic static class Catelog3Vo{//父分类,2级分类idprivate String catalog2Id;private String id;private String name;}
}
  1. 编写接口
/*** index/catalog.json** @return*/
@ResponseBody
@GetMapping("/index/catalog.json")
public Map<String, List<Catelog2Vo>> getCatalogJson(){Map<String, List<Catelog2Vo>> catalogJson = categoryService.getCatalogJson();return catalogJson;
}
  1. 业务代码
@Overridepublic Map<String, List<Catelog2Vo>> getCatalogJson() {System.out.println("查询了数据库....");//1、将数据库的多次查询变为一次,查询所有分类信息List<CategoryEntity> selectList = baseMapper.selectList(null);//1、查出所有1级分类List<CategoryEntity> level1Categorys = getParent_cid(selectList, 0L);//2、封装数据Map<String, List<Catelog2Vo>> parent_cid = level1Categorys.stream().collect(Collectors.toMap(k -> k.getCatId().toString(), v -> {//1、每一个的一级分类,查到这个一级分类的二级分类List<CategoryEntity> categoryEntities = getParent_cid(selectList, v.getCatId());//2、封装上面的结果List<Catelog2Vo> catelog2Vos = null;if (categoryEntities != null) {catelog2Vos = categoryEntities.stream().map(l2 -> {Catelog2Vo catelog2Vo = new Catelog2Vo(v.getCatId().toString(), null, l2.getCatId().toString(), l2.getName());//1、找当前二级分类的三级分类封装成voList<CategoryEntity> level3Catelog = getParent_cid(selectList, l2.getCatId());if (level3Catelog != null) {List<Catelog2Vo.Catelog3Vo> collect = level3Catelog.stream().map(l3 -> {//2、封装成指定格式Catelog2Vo.Catelog3Vo catelog3Vo = new Catelog2Vo.Catelog3Vo(l2.getCatId().toString(), l3.getCatId().toString(), l3.getName());return catelog3Vo;}).collect(Collectors.toList());catelog2Vo.setCatalog3List(collect);}return catelog2Vo;}).collect(Collectors.toList());}return catelog2Vos;}));return parent_cid;
}
  1. 返回数据

在这里插入图片描述

二、Nginx 域名搭建

2.1 搭建域名访问环境

  1. 示例图

在这里插入图片描述

  1. 正向代理与反向代理

在这里插入图片描述

2.2 nginx 配置文件

  1. 示例图
    在这里插入图片描述

  2. 修改 host 文件,将虚拟机地址映射为 gulimall.com 域名

在这里插入图片描述

  1. 查看 nginx.conf
[root@localhost conf]# cat nginx.conf user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;upstream gulimall{server 192.168.57.1:88;}include /etc/nginx/conf.d/*.conf;
}
  1. 网关配置:将 nginx 转发过来的 gulimall.com 域名请求转发到商品服务
- id: gulimall_host_routeuri: lb://gulimall-productpredicates:- Host=gulimall.com,item.gulimall.com
  1. gulimall.conf 配置

在这里插入图片描述

  1. 效果如下图

在这里插入图片描述

  1. 域名映射效果
  • 请求接口 gulimall.com
  • 请求页面 gulimall.com
  • nginx直接代理给网关,网关判断
  • 如果/api/****,转交给对应的服务器
  • 如果是满足域名,转交给对应的服务

2.3 总结

浏览器输入 gulimall.com 回车,由于 windows 的 host 文件配置了域名规则,浏览器会去访问 192.168.57.129 虚拟机地址,又因为虚拟机里面安装了 nginx 且默认会监听 80 端口,且 gulimall.com 域名符合 gulimall.conf 配置的 server_name gulimall.com -> nginx 就将其代理到
proxy_pass http://gulimall -> nginx.conf 的 server 192.168.57.1:88 -> 网关再路由到商品服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/17732.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】—— Redis的AOF持久化机制

&#x1f4a7; 【 R e d i s 】—— R e d i s 的 A O F 持久化机制 \color{#FF1493}{【Redis】 —— Redis的AOF持久化机制} 【Redis】——Redis的AOF持久化机制&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞…

查看docker运行状态,与查看防火墙运行状态

安装docker这里不细述了&#xff0c;可以通过 docker -version 查看安装的版本&#xff0c;出现成功就表示安装是ok的 查看docker状态是否启动状态&#xff0c;出现running就表示成功 systemctl status docker 如果没有则需要输入启动命令来启动 systemctl start docker 没报错…

Mac下pom.xml文件中找不到env.JAVA_HOME

Mac 11.7.6 这个是解决后的样子&#xff0c;解决前是env.JAVA_HOME找不到 上图中的${env.JAVA_HOME}中的env是用来获取系统环境变量&#xff0c;但是在mac10以上的版本,即使我们在bash_profile文件中配置了JAVA_HOME&#xff0c;这里也不能直接使用env将JAVA_HOME点出来&#…

Linux的软链接与硬链接

Linux的软链接与硬链接 1&#xff0c;创建硬链接&#xff1a;2&#xff0c;创建软链接&#xff1a;3&#xff0c;软链接是什么4&#xff0c;软链接文件的权限5&#xff0c;硬链接是什么6&#xff0c;做个小实验 总结问题&#xff1a;为什么有软链接了&#xff08;快捷方式&…

Dell Inspiron 15-3567电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板Dell Inspiron 15-3567 处理器Intel Core i5 Kabylake, 7200U, 2.70 GHz已驱动 内存16GB LPDDR4X 3200MHz已驱动 硬盘三星 MZVLW1T0HMLH-000L2 (…

服务端⾼并发分布式结构演进之路

1.前置概念 应⽤&#xff08;Application&#xff09;/系统&#xff08;System&#xff09; 为了完成一整套服务的一个程序或相互配合的程序群 模块&#xff08;Module&#xff09;/组件&#xff08;Component&#xff09; 当应⽤较复杂时&#xff0c;为了分离职责&#xf…

预付费智能水表远程控制系统

预付费智能水表远程控制系统是一种基于物联网技术的智能水表管理系统&#xff0c;它通过远程通信技术和云计算平台&#xff0c;实现了对水表的实时监控、数据采集、费用计算、远程控制等功能。该系统不仅可以提高水务公司的管理效率&#xff0c;还可以为用户提供更加便捷、可靠…

Mysql之账号管理、建库以及四大引擎详解

目录 一、MySql数据库引擎 1.1 什么是数据库引擎&#xff1f; 1.2 MySQL常见数据库引擎 1.2.1.InnoDB(MySQL默认引擎) 1.2.2.MyISAM 1.2.3.MEMORY&#xff08;Heap&#xff09; 1.3 存储引擎查看 二、建库 2.1.默认数据库介绍 2.2.建库 2.3.查看数据库 2.4.删除数…

springMVC(二)—— 进阶

一、解决中文乱码问题 解决中文乱码问题的关键在于判断字符是什么时候乱码的 先在java程序里刚生成这个值的地方打印一下&#xff0c;如果在控制台输出就乱码了&#xff0c;那就排除浏览器和jsp页面的编码出问题。否则 看浏览器的编码 看这个jsp页面的编码是否设置好了 一般不用…

Jmeter学习笔记

SpringCloud Alibaba学习笔记 1、项目搭建 版本依赖关系&#xff1a;https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.1、搭建父工程 spring-initializr构建项目 清理父工程中不必要的文件/文件夹 修改pom.xml文件 <…

(LFPAK56)BUK7Y7R0-40HX 40V、N 通道BUK9Y6R5-40HX表面贴装汽车用MOSFET器件

汽车用MOSFET将低压超级结技术与先进的封装设计相结合&#xff0c;以实现高性能和耐用性。Trench 9 MOSFET系列产品全部符合AEC-Q101标准&#xff0c;且超越了这一国际汽车级标准的要求&#xff0c;在包括温度循环 (TC)、耐高温栅极偏置 (HTGB)、耐高温反向偏置 (HTRB) 和断续工…

开篇(变量、运算符、进制)

一、Java简介 JDK&#xff08;JRE&#xff08;JVM & API&#xff09;、Java language&#xff08;tools & APIs&#xff09;&#xff09;&#xff1b;java源文件 → javac的编译 → class类&#xff08;会生成一个或多个class文件&#xff09;&#xff1b; * 使用 jav…