欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 2.28-3.03谷粒商城:Thymeleaf渲染nginx反向代理

2.28-3.03谷粒商城:Thymeleaf渲染nginx反向代理

2025/3/11 15:08:14 来源:https://blog.csdn.net/weixin_73118927/article/details/145928184  浏览:    关键词:2.28-3.03谷粒商城:Thymeleaf渲染nginx反向代理

目录

Thymeleaf

Thymeleaf 的工作流程

谷粒商城-首页

nginx 反向代理

反向代理

配置域名映射

nginx配置

负载均衡


Thymeleaf

Thymeleaf 是一种服务器端模板引擎,视图由后端服务器渲染。

浏览器向后端服务器(如 Spring Boot 应用)发送 HTTP 请求,前端页面 由服务器依据模板生成 静态html ,后端服务器将渲染完成的HTML 页面作为 HTTP 响应返回给浏览器。

  • 模板是一个包含固定结构和动态占位符的文件,用于生成动态内容。

  • 模板引擎通过将模板和数据结合,生成最终的输出(如 HTML 页面)。

Thymeleaf 的工作流程

  1. 浏览器请求页面

    • 用户在浏览器中输入 URL 或点击链接,浏览器向后端服务器(如 Spring Boot 应用)发送 HTTP 请求。

  2. 后端处理请求

    • 后端服务器(Java 应用)接收到请求后,根据请求的路径调用相应的控制器(Controller)。

    • 控制器从数据库或其他服务获取数据,并将数据放入模型(Model)中。

  3. 模板渲染

    • 控制器将模型数据传递给 Thymeleaf 模板引擎。

    • Thymeleaf 将模板文件(如 HTML)中的占位符(如 ${message})替换为模型中的实际数据,生成最终的 HTML 内容。

  4. 返回渲染后的页面

    • 后端服务器将渲染完成的 HTML 页面作为 HTTP 响应返回给浏览器。

  5. 浏览器显示页面

    • 浏览器接收到 HTML 后,解析并渲染页面,用户看到最终的动态内容。

dependency

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

 配置 Thymeleaf(Spring Boot 自动配置):

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.cache=falsespring.mvc.static-path-pattern=/static/**

谷粒商城-首页

 thymeleaf命名空间th

<html lang="en"  xmlns:th="http://www.thymeleaf.org">

 浏览器向服务器请求index.html

@Controller
public class IndexController {@Autowiredprivate CategoryService categoryService;/*** 前缀     spring.thymeleaf.prefix=classpath:/templates/* 后缀     spring.thymeleaf.suffix=.html* 视图解析器 进行拼串* @return*/@GetMapping({"/","/index.html"})public String indexPage(Model model){//获取 一级分类 ,并装入模型List<CategoryEntity> categoryEntityList = categoryService.getLevel1Category();model.addAttribute("categories",categoryEntityList);return "index";}@ResponseBody@GetMapping("index/catalog.json")public Map<String,List<Level2CategoryVo>> getCategories(){Map<String,List<Level2CategoryVo>> categoryMap = categoryService.getLevel2AndLevel3Category();return categoryMap;}
}

 index.html中的一级分类

<li  th:each="category : ${categories}"><a href="#" class="header_main_left_a"   th:attr="ctg-data = ${category.catId}"><b th:text="${category.name}">一级分类</b></a>
</li>

业务处理

  1. 获取一级分类
  2. 将一级分类作为key,二级分类(组合三级分类)作为value,封装成map
    @Overridepublic List<CategoryEntity> getLevel1Category() {return this.list(new QueryWrapper<CategoryEntity>().eq("cat_level",1).eq("show_status",1));}@Overridepublic Map<String, List<Level2CategoryVo>> getLevel2AndLevel3Category() {//一级分类List<CategoryEntity> level1 = this.getLevel1Category();Map<String, List<Level2CategoryVo>> categoryMap = level1.stream().collect(Collectors.toMap(k -> k.getCatId().toString(),v ->{//查询该一级分类下的二级分类List<CategoryEntity> level2List = this.list(new QueryWrapper<CategoryEntity>().eq("parent_cid", v.getCatId()));List<Level2CategoryVo> level2CategoryVos = null;if (level2List != null){level2CategoryVos = level2List.stream().map(level2 -> {//查询 二级分类 下的 三级分类List<CategoryEntity> level3List = this.list(new QueryWrapper<CategoryEntity>().eq("parent_cid", level2.getCatId()));List<Level2CategoryVo.Level3Category> collect = null;if (level3List != null) {collect = level3List.stream().map(level3 -> {Level2CategoryVo.Level3Category level3Category = new Level2CategoryVo.Level3Category(level2.getCatId(), level3.getCatId(), level3.getName());return level3Category;}).collect(Collectors.toList());}Level2CategoryVo level2CategoryVo = new Level2CategoryVo(v.getCatId(), collect, level2.getCatId(), level2.getName());return level2CategoryVo;}).collect(Collectors.toList());}return level2CategoryVos;}));return categoryMap;}

nginx 反向代理

反向代理

隐藏服务器,nginx作为代理服务器可以被外网访问,外网访问服务器只能通过nginx代理

配置域名映射

访问域名时,按照特定顺序查找域名对应的IP地址。

  1. 浏览器缓存
  2. 操作系统缓存
  3. Hosts文件
  4. DNS服务器
  5. 递归查询

 hosts文件是本地静态域名解析文件,可手动配置域名与IP的映射。

"C:\Windows\System32\drivers\etc\hosts"
192.168.40.128  gulimall.com
127.0.0.1       localhost

nginx配置

nginx.conf总配置

配置包含 conf.d文件夹下 所有 .conf文件

 

cat nignx.conf 

负载均衡

  • Using nginx as HTTP load balancer
  1. http请求头中参数        Host:        gulimall.com
  2. server_name 用于指定当前 server 块处理的域名
  3. Nginx 会根据请求头中的 Host 字段与 server_name 进行匹配,选择最合适的 server 块来处理请求。
  4. nginx将http请求负载均衡到多个上游服务器upstream
  5. 在 location 块中显式设置 proxy_set_header Host $host

 当 Nginx 作为反向代理时,默认行为如下:

  • 如果未显式设置 Host 头,Nginx 会将 Host 头设置为 proxy_pass 中指定的上游服务器地址。

  • 例如,如果 proxy_pass http://192.168.40.1:88;,Nginx 会将 Host 头设置为 192.168.40.1:88,而不是客户端原始请求的 Host 值(如 gulimall.com)。

gateway网关

spring:cloud:gateway:routes:- id: gulimall_host_routeuri: lb://gulimall-productpredicates:- Host=**/gulimall.com,gulimall.com

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词