谷粒商城实战笔记-137-商城业务-首页-整合dev-tools渲染一级分类数据

一,使用热加载工具spring-boot-devtools

因为我们采用的前后端一体的开发模式,前端页面会频繁修改,如果每次修改都要重启服务,效率就会受到很大影响。

可以引入spring-boot-devtools这个开发工具,避免每次修改都要重启服务。

1,引入devtools依赖

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

引入了devtools的服务,在Idea的Services模块下,服务名后会有标识。

在这里插入图片描述

2,ctrl+shift+f9 编译静态资源

修改静态资源后,使用ctrl+shift+f9编译静态资源,之后浏览器请求的资源就是最新的了。

需要注意的是,如果修改了配置文件和Java文件,最好还是重新启动服务,否则可能导致修改的代码未生效。

二,thymeleaf原理

在这里插入图片描述
如图所示,当Controller的返回值是一个String类型时,thymeleaf将介入。

当用户访问 “localhost:10000/index.html” 这个URL时,Spring会执行以下步骤:

  1. 路由到控制器:Spring的DispatcherServlet首先捕获这个请求,并根据请求的URL和HTTP方法找到合适的处理器(在这个例子中是一个名为IndexController的类)。

  2. 注入服务层对象:在IndexController类中,有一个CategoryService对象被自动注入。这是通过@Autowired注解实现的,该注解告诉Spring将已配置的服务实例注入到控制器中。

  3. 处理请求:当请求到达IndexController后,indexPage()方法会被调用。这个方法接收一个Model参数,用于存储要传递给视图的数据。

  4. 获取数据:在indexPage()方法内部,调用了categoryService.getLevel1Categoris()方法来查询所有的1级分类。这些数据将会被添加到Model对象中。

  5. 返回视图名:最后,indexPage()方法返回了一个字符串 “index”,这表示要渲染的视图名称。Spring的视图解析器会将此字符串与默认的前缀(在这种情况下可能是"classpath:/templates/“)和后缀(”.html")组合起来,形成实际的视图路径。

  6. 渲染视图:现在,Spring将控制权交给Thymeleaf模板引擎,后者负责使用Model中的数据填充HTML模板并生成最终的HTML响应。

  7. 发送响应:最后,Spring将生成的HTML响应发送回客户端浏览器进行展示。

三,渲染一级分类

前端请求首页时,url是http://localhost:10000/,后端对应的Controller接口如下:

	(value = {"/","index.html"})
    private String indexPage(Model model) {

        //1、查出所有的一级分类
        List<CategoryEntity> categoryEntities = categoryService.getLevel1Categorys();
        model.addAttribute("categories",categoryEntities);

        return "index";
    }

这个接口首先查出所有的一级分类数据,并将存储在Model中,返回字符串index

因为返回的是字符串,所以响应会被thymeleaf拦截,thymeleafclasspath:/templates/找到index.html,把index.html作为模板,结合存储在Model中数据进行编译,将Model中的数据填充到index.html中,再将index.html返回给浏览器,由浏览器展示对应的页面。

显然,index.html中必须符合thymeleaf规范。

首先,要标明命名空间。

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

在这里插入图片描述

其次,要使用thymeleaf语法。

			<ul>
            <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>
          </ul>

这段代码是使用 Thymeleaf 模板引擎编写的 HTML 代码,用于动态生成一个包含多个列表项 (<li>) 的无序列表 (<ul>). 每个列表项 (<li>) 都代表一个类别,并且其中包含一个链接 (<a>),该链接显示类别的名称。

  • <ul>: 开始一个无序列表标签。
  • <li th:each="category : ${categories}">: 这一行定义了一个列表项,并使用 Thymeleaf 的 th:each 属性来遍历一个名为 categories 的模型属性。这里的 category 是迭代变量,它代表列表中的每一个元素。每次迭代时,category 变量都会取 categories 列表中的一个值。
  • <a href="#" class="header_main_left_a" th:attr="ctg-data=${category.catId}">: 这是一个链接标签,其 href 属性默认设置为 "#",但实际应用中可能会通过 JavaScript 或其他方式修改。th:attr 属性用来动态地设置链接的一个自定义属性 ctg-data,其值为当前 category 对象的 catId 属性值。
  • <b th:text="${category.name}">家用电器</b>: 这是一个加粗标签 (<b>),它使用 th:text 属性来动态设置显示的文本内容。这里文本内容是当前 category 对象的 name 属性值。如果 category.name 没有值,则默认显示 "家用电器"
  • </a>: 关闭链接标签。
  • </li>: 关闭列表项标签。
  • </ul>: 关闭无序列表标签。

当这段代码由 Thymeleaf 渲染时,它会根据传入的 categories 列表生成相应数量的 <li> 元素,并为每个元素填充相应的数据。例如,如果 categories 包含三个元素,那么最终的 HTML 输出将包含三个 <li> 元素,每个元素中都有一个带有正确 ctg-data 值的链接以及显示正确类名的文本。

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用中提供的信息,谷粒商城是一个B2C模式的电商平台,主要销售自营商品给客户。B2C模式指的是商对客的模式,即商家直接向消费者销售商品和服务。谷粒商城使用微服务架构,这是一种将应用程序拆分成独立且可独立开发、部署和扩展的小型服务的架构。引用还提到谷粒商城的技术涵盖微服务架构、分布式、全栈、集群、部署和自动化运维等方面。 因此,从前慢-谷粒商城篇章6主要讨论的可能是谷粒商城的技术方面,包括微服务架构、分布式、全栈、集群、部署和自动化运维等内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [从前慢-谷粒商城篇章1](https://blog.csdn.net/m0_67391121/article/details/125383572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [2020年谷粒商城md笔记](https://download.csdn.net/download/ZHUXIUQINGIT/12543161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小手追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值