Spring Boot入门 (十九) 之 CURD实验 员工列表的公共页抽取 以及公共代码的抽取

简介: Spring Boot入门 (十九) 之 CURD实验 员工列表的公共页抽取 以及公共代码的抽取

1.员工列表页

前边我们实现了登录功能,并且登陆进去进去了后台管理页面

下面我们要实现的是,点击Customers就出来员工列表也就是list.html

我们先找到Customers的位置,并把他的href跳转改了

由于我们使用的是restfulCURD,所以可以这么写

记得在HTML里边写上thymeleaf的约束头


下边我们要写controller来实现路由

我们先把list.html放到emps包里边方便管理

然后新建EmployeeController.java类,

package com.zhanshen.springbootweb.controller;
import com.zhanshen.springbootweb.dao.EmployeeDao;
import com.zhanshen.springbootweb.entities.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Collection;
@Controller
public class EmployeeController {
    /**
     * 这个是员工的Dao层,查询所有员工,之前的代码我们引入了,里边有查询的方法
     */
    @Autowired
    EmployeeDao employeeDao;
    //查询所有员工
    @GetMapping("/emps")
    public String list(Model model) {
        /**
         * 查询得到所有的员工,然后传入Model ,用于把查询得到的查询所有的数据放到请求域中,最后返回到list.html里边
         */
        Collection<Employee> employees = employeeDao.getAll();
        model.addAttribute("emps", employees);
        return "emps/list";
    }
}

这样就可以跳转到list页面


2.公共代码片段的抽取

我们会发现list的侧导航栏和头部导航栏的内容是一样的,所以我们可以让他们去共用一套代码

这里的头部和侧栏都是公用的,我们找到他们的代码

,先来看头部的栏目

代码是body里边的一个叫做<nav>标签的导航栏


通过th:fragment="xxx"可以把它作为公共的模板,然后我们在其他地方引入

利用th:insert"~{模板名 :: 模块名}"来引入

会发现,我们的div里边就是我们引入的模块

当然我们发现,我们在原来的nav标签上边又套了一层div这并不是很友好,所以我们还有其他的两种写法,这三种写法分别如下


th:insert"~{模板名:: 模块名}"

th:replace"~{模板名:: 模块名}"

th:include"~{模板名:: 模块名}"

第一个的用法我们看到了就是在你所写的标签里边插入,这样会多出一层标签,下面两个用法如下

<footer th:fragment="copy">
    &copy; 2011 The Good Thymes Virtual Grocery
</footer>
<body>
...
<div th:insert="footer :: copy"></div>
<div th:replace="footer :: copy"></div>
<div th:include="footer :: copy"></div>
</body>

我们比较效果如下

<body>
...
<div>
<footer>
&copy; 2011 The Good Thymes Virtual Grocery
</footer>
</div>
<footer>
&copy; 2011 The Good Thymes Virtual Grocery
</footer>
<div>
&copy; 2011 The Good Thymes Virtual Grocery
</div>
</body>

发现第二个是我们想要的,把他所在的标签做替换,第三个则是把要包含的标签去掉,取里边的内容

于是我们换成第二个就好了

这样nav就引入进来了

我们也把左侧的导航栏引入进来


除了用th:fragment外我们还可以直接用选择器,如下:


设置id为leftbar

然后


这样既可

相关文章
|
2月前
|
安全 Java 应用服务中间件
Spring Boot + Java 21:内存减少 60%,启动速度提高 30% — 零代码
通过调整三个JVM和Spring Boot配置开关,无需重写代码即可显著优化Java应用性能:内存减少60%,启动速度提升30%。适用于所有在JVM上运行API的生产团队,低成本实现高效能。
231 3
|
1月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
1231 30
|
29天前
|
安全 Java 测试技术
《深入理解Spring》单元测试——高质量代码的守护神
Spring测试框架提供全面的单元与集成测试支持,通过`@SpringBootTest`、`@WebMvcTest`等注解实现分层测试,结合Mockito、Testcontainers和Jacoco,保障代码质量,提升开发效率与系统稳定性。
|
5月前
|
监控 Java 数据安全/隐私保护
阿里面试:SpringBoot启动时, 如何执行扩展代码?你们项目 SpringBoot 进行过 哪些 扩展?
阿里面试:SpringBoot启动时, 如何执行扩展代码?你们项目 SpringBoot 进行过 哪些 扩展?
|
1月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
312 2
|
2月前
|
安全 IDE Java
Spring 的@FieldDefaults和@Data:Lombok 注解以实现更简洁的代码
本文介绍了如何在 Spring 应用程序中使用 Project Lombok 的 `@Data` 和 `@FieldDefaults` 注解来减少样板代码,提升代码可读性和可维护性,并探讨了其适用场景与限制。
119 0
Spring 的@FieldDefaults和@Data:Lombok 注解以实现更简洁的代码
|
3月前
|
人工智能 监控 安全
Spring AOP切面编程颠覆传统!3大核心注解+5种通知类型,让业务代码纯净如初
本文介绍了AOP(面向切面编程)的基本概念、优势及其在Spring Boot中的使用。AOP作为OOP的补充,通过将横切关注点(如日志、安全、事务等)与业务逻辑分离,实现代码解耦,提升模块化程度、可维护性和灵活性。文章详细讲解了Spring AOP的核心概念,包括切面、切点、通知等,并提供了在Spring Boot中实现AOP的具体步骤和代码示例。此外,还列举了AOP在日志记录、性能监控、事务管理和安全控制等场景中的实际应用。通过本文,开发者可以快速掌握AOP编程思想及其实践技巧。
|
5月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
910 1
Spring boot 使用mybatis generator 自动生成代码插件
|
4月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
5月前
|
Java 调度 流计算
基于Java 17 + Spring Boot 3.2 + Flink 1.18的智慧实验室管理系统核心代码
这是一套基于Java 17、Spring Boot 3.2和Flink 1.18开发的智慧实验室管理系统核心代码。系统涵盖多协议设备接入(支持OPC UA、MQTT等12种工业协议)、实时异常检测(Flink流处理引擎实现设备状态监控)、强化学习调度(Q-Learning算法优化资源分配)、三维可视化(JavaFX与WebGL渲染实验室空间)、微服务架构(Spring Cloud构建分布式体系)及数据湖建设(Spark构建实验室数据仓库)。实际应用中,该系统显著提升了设备调度效率(响应时间从46分钟降至9秒)、设备利用率(从41%提升至89%),并大幅减少实验准备时间和维护成本。
315 0