黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(1)准备工作、部门管理

news2024/9/22 7:23:20

一、准备工作

1.明确需求

根据产品经理绘制的页面原型,对部门和员工进行相应的增删改查操作。

2.环境搭建

将使用相同配置的不同项目作为Module放入同一Project,以提高相同配置的复用性。

  • 准备数据库表(dept, emp)=== 资料中包含了创建表的代码
  • 创建springboot工程,引入对应的起步依赖
  • 配置application.properties中引入mybatis的配置信息,准备对应的实体类
  • 准备对应的Mapper(Dao===数据访问),Service(接口,实现类===逻辑处理),Controller(接受请求、响应数据)基础结构

9fdda918179e46d59141581938e17d0b.png

b712fac9e01d4b509c6c1053773e16ba.png

👆添加相应依赖

IDEA:*.properties文件中文乱码解决方案_xx.properties注释中文乱码-CSDN博客https://blog.csdn.net/u010285974/article/details/107102644👆修改配置文件中的中文乱码情况

200a1fb6992a41dd93bbac76a9c6cd29.png

  • pojo:存放的是两个实体类,实体类中的属性(驼峰命名)和表结构的字段(下划线分割)是一一对应的;
  • controller:控制层,接受前端发送的请求,对请求进行处理,并响应数据;
  • service:业务逻辑层,准备两个接口,并准备了两个接口的实现类,在实现类上面加了注解@Service,表示将当前实现类交给IOC容器管理,成为IOC容器里的bean对象;
  • Mapper:在mapper接口上面加上注解@Mapper。

3.开发规范

基于当前最主流的前后端分离模式进行开发。

前端开发人员将打包好的前端工程部署在ngix服务器上运行,后端开发人员将打包好的服务端程序运行在Tomcat服务器上。

前端向后端请求数据,再有后端给前端响应数据。

所以前后端在开发过程中需要共同遵守【接口文档】(根据产品经理绘制的页面原型和需求制作)进行开发。

本案例的前后端交互是根据Restful风格的接口进行交互的。

  • REST(REpresentational State Transfer),表述性状态转换,是一种软件架构风格。
  • 前后端交互统一响应结果Result

整体开发流程:

查明页面原型明确需求==》阅读接口文档==》思路分析==》接口开发==》接口测试==》前后端联调


二、部门管理

1.查询部门

需求分析:

查询全部数据(由于部门数据比较少,不考虑分页)

思路流程⭐:

前端发起一个查询部门的请求

=====》

被DeptController处理

  1. 接收请求;
  2. 调用service查询部门;
  3. 响应(封装在统一响应结果Result中相应给前端)

=====》

DeptService进行逻辑处理(调用mapper接口查询)

=====》

DeptMapper数据处理(selec * from dept;)

=====》

查询访问数据库

代码编写:

1)@Slf4j:定义日志记录对象

4e15fb7d070541529c95ad6b333ee5ea.png

注意:项目开发过程中,尽量不要使用sout输出日志,使用日志记录框架记录日志。

private static Logger log = LoggerFactory.getLogger(DeptController.class);

固定代码,lombok为了简化代码书写,可以直接增加注释@Slf4j,定义日志记录对象

3a43cdc9702f4db08bd293f210f8a9cc.png

2)@GetMapping:限定接口请求方式为GET

a2d86a9ba3da42429572ed97d36fc9b5.png

3)@Autowird:依赖注入

当标注的属性是接口时,注入的是这个接口的实现类

查询操作:

07c1d3ab51f945698a1b73daba2e5581.png

691f5bf3fccd4716a718a88b0ce10cca.png

前后端联调:

解压打包文件到没有中文路径的目录下,双击ngix.exe运行,然后打开设备管理器==详细信息里面查看ngix是否正常运行==访问测试:localhost:90访问

95a87ae9b2b44b1e9e46e389ddcb5662.png

按下F12,打开浏览器的开发者工具,抓取这次网络请求

865918b7076c4503b548c2219281b355.png

d8015da1a253493db52fd45c3b08ba2a.png

2.删除部门

需求分析:

弹出确认框 , 提示 "您确定要删除该部门的信息吗 ?"  如果选择确定 , 则删除该部门 , 删除成功后 , 重新刷新列表页面。  如果选择了取消,则不执行任何操作。

代码编写:

1)@PathVariable:获取路径参数

将URL中占位符参数绑定到Controller处理方法的输入参数中

6e796b1c57524c4aa9f1df4d16dff0c0.png

表示获取路径变量中的id,然后绑定给方法中的id参数

DeptController(设置url,接收响应)==>DeptService(接口)==>DeptServiceImpl(实现类)==>DeptMapper(数据库操作)

删除操作:

29ce21b6925f42cba1685a5022e18f84.png

0cc040c5e2494443ae5759a3169a6ce6.png

前后端联调:

fc87b6c82c684b9c97c439632934dec6.png

3.新增部门

需求分析:

1.1 点击新增部门,会打开新增部门的页面。 

1.2 部门名称,必填,唯一,长度为2-10位。

代码编写:

1)@RequestBody:接收json参数

新增结果:

请求👇

11112bb1d2b2499ea08f9465de47adb3.png


响应👇

4432737e6cce429c82137d28d1d44db1.png

前后端联调:

c675ecd1dafc4137976379a011c5f459.png

ada5e73137c5465fab6b70ce0f3346b1.png

4.Controller优化

08ae4ea581184759b849ff0c3a337baf.png

1677b46bb8bb4f6b909d4ed534963520.png

3fdd4456f247496fa82f37f48d6dce49.png

可以看出上面的三种响应的地址有重复,可以将/depts抽取出来,变成公共地址,将后面的地址中有公共部分的地方进行删除

7e3383713d334aa2b1e6a93323b1c058.png

dc10362f36274e589a19b239a7b9fd38.png

6cdd5579c3d7438f92acbc22a363b59d.png

569ca71eea4a43b58448ca3a9f5b033d.png

5.修改部门(自行实现)

需求分析:

根据id查询到数据然后再修改部门

代码编写:

结合查询和删除操作

修改结果:

测试时,需要注意注释掉删除部门操作,因为二者的url一致,会有冲突。

14ebf9d8b51344d790c4bbc7e6f8c6c9.png

6025859f4fa54ae483a88d130455c725.png

前后端联调:

d90748ec1be548559bfa1e332a3d28d7.png

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#基础-空处理

在c#中,值对象是没有办法赋值为null的。比如说,你想要定义一个布尔值,你的赋值数据要么得是true、要么就得是false,默认情况下我们永远没可能给这个布尔赋值为null,即使只是对这个变量进行声明而不初始化数据&#xff…

代码随想录算法训练营第四天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点面试题 02.07. 链表相交、142.环形链表II

文档讲解:虚拟头节点,三指针,快慢指针,链表相交,环形链表, 技巧: 1、对于指针的操作要画图,明确步骤后好做了 2、使用虚拟头节点可以避免对头节点单独讨论,且方便对头节点…

详解CAS及ABA问题

🌈🌈🌈今天给大家分享的是 CAS 问题。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈️动动…

【工具栏】SequenceDiagram插件的使用(根据代码生成时序图)

1. 安装 2.使用 进入代码页面,点击鼠标右键 选择方法 根据方法中的代码生成时序图

【LangChain学习之旅】—(8) 输出解析:用OutputParser生成鲜花推荐列表

【LangChain学习之旅】—(8) 输出解析:用OutputParser生成鲜花推荐列表 LangChain 中的输出解析器Pydantic(JSON)解析器实战第一步:创建模型实例第二步:定义输出数据的格式第三步:创…

AI-数学-高中-4.函数表达式特性-要变一起变

求f(x):换元法:左边代换时,右边也要同时替换,原作者视频:函数】1引导课:高中为什么用f(x)_哔哩哔哩_bilibili 1.什么是函数:给定任意一个x,都有唯一确定的y与之对应,这种x与y的关系就…

猫头虎分享:探索TypeScript的世界 — TS基础入门 ‍

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

UML-类图和类图转化为代码

提示:文章详细的讲解了类图的四种关系,以及每种关系如何转化为对应的代码。 UML-类图和类图转化为代码 一、类于类之间的关系1.依赖关系2.关联关系(1) 单向关联(2) 双向关联(3) 自关联(4) 聚合关联(has-a)(5) 组合关联(contains-a&#xff09…

当浏览器输入url的时候会发生什么?

说在前面 当我们在浏览器中输入URL并按下回车时,背后发生了一系列神秘的操作。本文将带您深入了解,从URL解析到页面渲染,揭秘浏览器输入URL的完整流程。 具体步骤 当浏览器输入URL时,一般经过以下细节步骤: 1、引言 …

【GDAL】Windows下VS+GDAL开发环境搭建

Step.0 环境说明(vs版本,CMake版本) 本地的IDE环境是vs2022,安装的CMake版本是3.25.1。 Step.1 下载GDAL和依赖的组件 编译gdal之前需要安装gdal依赖的组件,gdal所依赖的组件可以在官网文档找到,可以根据…

【学习心得】Git深入学习

若您还未安装Git或是只想简单使用,可以先看看我的文章“Git快速上手”http://t.csdnimg.cn/gsaGj 一、深入学习Git必须熟悉两个概念 (1)【四个区】Git本地有三个区,远程仓库也可以看出成一个区域 工作区、暂存区、本地仓库、远…

AI教我学编程之C#变量及实例演示

前言 在AI教我学编程之AI自刀 这篇文章中,我们知道了变量的基础类型,那么变量在C#中有什么作用呢?我们一起来看看吧! 目录 重点先知 变量 变量类型 实例演示 变量声明 实例演示 提出疑问 初始化变量 自动初始化 多变量声明 实…

关于浏览器缓存的一些坑记录

1.js强制刷新浏览器缓存 网络上一搜基本都说用location.reload(true)可以强制刷新缓存,但是没人讲这个方法只准对火狐浏览器生效,火狐浏览器的确可以实现强制刷新并每次请求都是新的没有走缓存;chrome依然是走200 状态 缓存。 MDN解析: 2.m…

Python教程(23)——Python类中常用的特殊成员

在Python中,类特殊成员是指以双下划线开头和结尾的属性和方法,也被称为魔术方法(Magic methods)或特殊方法(Special methods)。这些特殊成员在类的定义中具有特殊的语法和功能,用于实现对象的特…

【python入门】day26: 模拟高铁售票系统

界面 代码 #-*- coding:utf-8 -*- import prettytable as pt#---------导入漂亮表格 import os.path filename ticket.txt#更新座位状态 def update(row_num):#------更新购票状态with open(filename,w,encodingutf-8) as wfile:for i in range(row_num):lst1 [f{i1},有票,有…

学习回顾总结

简述 哈喽大家好,记得上一次发文是在2020年的8月,当时是在西工大的长安校区做实验,在那里写了上一篇博客基于STM32f103ZET6单片机按键控制电机正反转(带PWM调速)。时间过得飞快,现在是2024年的1月&#xff…

【STM32】HAL库的RCC复位状态判断及NVIC系统软件复位

【STM32】HAL库的RCC复位状态判断及NVIC系统软件复位 在实际开发中 有时候会遇到复位状态不同 导致结果不同的情况 比如在上电复位时 电压不稳定 可能导致一些外部芯片无法正常工作 从而导致进行了错误的操作流程 所以 可以在程序运行后 加一个复位状态判断 用来检测是否正常复…

【代码随想录04】24. 两两交换链表中的节点 19. 删除链表的倒数第 N 个结点 面试题 02.07. 链表相交 142. 环形链表 II

24. 两两交换链表中的节点 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 做题思路 可以设置虚拟头结点cur和画图…

Java 使用 JDBC 连接mysql

之前我们学习了JavaSE,编写了Java程序,数据保存在变量、数组、集合等中,无法持久化,后来学习了IO流可以将数据写入文件,但不方便管理数据以及维护数据的关系; 后来我们学习了数据库管理软件MySQL&#xff…

POI-tl 知识整理:整理1 -> 利用模板向word中写入数据

1 文本传值 Testpublic void testText() throws Exception {XWPFTemplate template XWPFTemplate.compile("D:\\Idea-projects\\POI_word\\templates.docx");Map<String, Object> map new HashMap<>();map.put("title", "Hi, girl"…