【JavaEE进阶】图书管理系统 - 壹
目录
🌲序言
🌴前端代码的引入
🎋约定前后端交互接口
🚩接口定义
🍃后端服务器代码实现
🚩登录接口
🚩图书列表接口
🎄前端代码实现
🚩登录页面
🚩图书列表页
🌲序言
由于目前所学知识还不足以完成图书管理系统的开发,后续我们会边学习新的内容,边进行开发
准备工作:创建项目
🌴前端代码的引入
由于本文章只讲述后端内容,前端就直接展示即可。
代码引入:
前端页面展示:
注意:图书列表显示的数据都是前端的假数据


🎋约定前后端交互接口
当前我们先完成登录功能和列表功能:

🚩接口定义
根据需求可以得知,后端需要提供两个接⼝
- 账号密码校验接⼝:根据输⼊⽤⼾名和密码校验登录是否通过
- 图书列表:提供图书列表信息
登录接口:
url:/user/login
type:post
参数:json/普通参数userName,password(这里我们定义为普通参数)
返回结果:验证成功返回" ",验证失败返回"用户名或者密码错误"
图书列表接口:
url:/book/getList
type:无要求
参数:无
返回结果:返回图书列表,List<BookInfo>
🍃后端服务器代码实现
由于目前还没有学习应用分层,我们将所创建的类还是存于同一文件下
🚩登录接口
代码:
postman测试:发现当前返回了一个空,请求成功
错误测试:

🚩图书列表接口
BookInfo字段定义:是由"添加图书"和"修改"以及"图书列表展示"信息的字段进行一个融合组成的BookInfo,当前这个三个所有的信息都一样。

图书列表接口代码:
由于这里没有真实数据返回,所以采用"mock"的方式,就是模拟的意思,对于当前也就是造假数据
postman测试:
🎄前端代码实现
🚩登录页面
ajax请求后端数据:
当我们把代码写完之后,我们查看一下登录页面的源代码:发现这里的代码并没有改变,也就是缓存的问题,通过crtl+f5强刷一下
再次查看源代码:此时就有了(若还是不行crtl+shift+delete删除数据,还是不行,查看后端target文件是否将前端代码正确加载,通过clean或者直接删除target文件,重新运行)
正确登录:发生页面跳转

错误登录:弹窗提示

🚩图书列表页
ajax请求数据:
访问book_list页面:
🌳应用分层
学习完该文章就可以对上述代码进行分层:【JavaEE进阶】应用分层-CSDN博客
- controller:里面存放接收前端发送的请求,对请求进⾏处理,并响应数据的代码
- service:里面存放处理具体的业务逻辑的代码。
- dao:里面负责数据访问操作,包括数据的增、删、改、查
- model:里面存放一些固体对象
接下来每个包下面创建以下文件
🚩UserController.java
UserController.java 里面存放的是登录相关的代码,负责实现登录用户名与密码的验证。这里并没有进行分层(后续会进行分层)
由于没有连接数据库,咱们这里只用字符串代替验证。访问路径遵守接口文档的规定即可。代码实现如下:
🚩BookController.java
关于图书列表展示这里我做了一个应用分层
BookController.java这里面实现的图书列表信息的返回。具体实现逻辑我放在了BookService.java里面。
因为当前阶段并没有导入数据库,所以我们这里也是使用内存进行存储。并在BookDao.java进行了数据增加操作
对于Book类我放在了BookInfo.java中进行实现,并且在管理对象方面,使用了spring进行管理
BookController.java调用BookService.java:

BookService.java调用BookDao:

BookInfo:
相关文章:
【JavaEE进阶】图书管理系统 - 壹
目录 🌲序言 🌴前端代码的引入 🎋约定前后端交互接口 🚩接口定义 🍃后端服务器代码实现 🚩登录接口 🚩图书列表接口 🎄前端代码实现 🚩登录页面 🚩…...
牛客周赛 Round 77 题解
文章目录 A-时间表B-数独数组D-隐匿社交网络E-1or0 A-时间表 签到题 #include <bits/stdc.h> using namespace std;int main() {int a[6] {20250121,20250123,20250126,20250206,20250208,20250211};int n; cin >> n;cout << a[n - 1];return 0; }B-数独数…...
Mybatis配置文件详解
MyBatis通过XML或注解的方式将Java对象与数据库中的记录进行映射,极大地简化了数据访问层的开发。而在MyBatis的核心组成部分中,配置文件扮演着举足轻重的角色。它不仅定义了MyBatis的运行环境,还配置了数据源、事务管理、映射器等关键元素&a…...
《深度揭秘:TPU张量计算架构如何重塑深度学习运算》
在深度学习领域,计算性能始终是推动技术发展的关键因素。从传统CPU到GPU,再到如今大放异彩的TPU(张量处理单元),每一次硬件架构的革新都为深度学习带来了质的飞跃。今天,就让我们深入探讨TPU的张量计算架构…...
Java基础知识总结(二十二)--List接口
List本身是Collection接口的子接口,具备了Collection的所有方法。现在学习List体系特有的共性方法,查阅方法发现List的特有方法都有索引,这是该集合最大的特点。 List:有序(元素存入集合的顺序和取出的顺序一致),元素都…...
[STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器
一、定时器简介 STM32 中的定时器(TIM,Timer)是其最重要的外设之一,广泛用于时间管理、事件计数和控制等应用。 1.1 基本功能 定时功能:TIM定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中…...
算法随笔_27:最大宽度坡
上一篇:算法随笔_26: 按奇偶排序数组-CSDN博客 题目描述如下: 给定一个整数数组 nums,坡是元组 (i, j),其中 i < j 且 nums[i] < nums[j]。这样的坡的宽度为 j - i。 找出 nums 中的坡的最大宽度,如果不存在,返回 0 。 …...
无公网IP 外网访问本地部署 llamafile 大语言模型
llamafile 是一种AI大模型部署(或者说运行)的方案,它的特点就是可以将模型和运行环境打包成一个独立的可执行文件,这样就简化了部署流程。用户只需要下载并执行该文件,无需安装运行环境或依赖库,这大大提高…...
使用PC版本剪映制作照片MV
目录 制作MV模板时长调整拖动边缘缩短法分割删除法变速法整体调整法 制作MV 导入音乐 导入歌词 点击歌词 和片头可以修改字体: 还可以给字幕添加动画效果: 导入照片,自动创建照片轨: 修改片头字幕:增加两条字幕轨&…...
搭建 docxify 静态博客教程
首先,安装 node 环境安装 docxify ,参考官网:https://docsify.js.org/#/zh-cn/ npm i docsify-cli -g新建docs文件夹专门用来放文章,初始化命令 docsify init ./docs就会生成如下两个文件,index.html 入口文件&#…...
汽车OEMs一般出于什么目的来自定义Autosar CP一些内容
汽车OEMs在使用AUTOSAR CP(Classic Platform)协议时,可能会根据自身的特定需求对标准协议进行修改,形成自己的企业标准(企标)。这种修改通常是为了满足特定的硬件平台、功能需求、安全要求或优化性能。以下是一些常见的修改场景和例子: 1. 硬件平台适配 企业可能会根据…...
Vue.js Vuex 模块化管理
Vue.js Vuex 模块化管理 今天咱们来聊聊如何在 Vuex 中进行模块化管理。当你的 Vue.js 应用变得越来越庞大时,单一的状态管理可能会让人头疼。这时候,Vuex 的模块化功能就派上用场了。 为什么需要模块化? 想象一下,如果把所有的…...
分布式光纤应变监测是一种高精度、分布式的监测技术
一、土木工程领域 桥梁结构健康监测 主跨应变监测:在大跨度桥梁的主跨部分,如悬索桥的主缆、斜拉桥的斜拉索和主梁,分布式光纤应变传感器可以沿着这些关键结构部件进行铺设。通过实时监测应变情况,能够精确捕捉到车辆荷载、风荷…...
用Devc++与easyx一步一步做游戏[启动界面部分]-解决hover闪烁问题及优化
在之前的博文中《用Devc与easyx一步一步做游戏[启动界面部分]-之按钮制作》,我们利用Devc和easyx完成了游戏启动界面按钮的基本制作,实现了按钮的绘制以及鼠标悬停时的信息提示功能。然而,目前还存在一个问题,即鼠标移动时&#x…...
mysql 学习3 SQL语句--整体概述。SQL通用语法;DDL创建数据库,查看当前数据库是那个,删除数据库,使用数据库;查看当前数据库有哪些表
SQL通用语法 SQL语句分类 DDL data definition language : 用来创建数据库,创建表,创建表中的字段,创建索引。因此成为 数据定义语言 DML data manipulation language 有了数据库和表以及字段后,那么我们就需要给这个表中 添加数…...
【数据结构】_链表经典算法OJ:分割链表(力扣—中等)
目录 1. 题目描述及链接 2. 解题思路 2.1 思路1 2.2 思路2 2.3 思路3(本题采取该解法) 3. 题解程序 1. 题目描述及链接 题目链接:面试题 02.04. 分割链表 - 力扣(LeetCode) 题目描述: 给你一个链表…...
k8s支持自定义field-selector spec.hostNetwork过滤
好久没写博客啦,年前写一个博客就算混过去啦😂 写一个小功能,对于 Pod,在没有 label 的情况下,支持 --field-selector spec.hostNetwork 查询 Pod 是否为 hostNetwork 类型,只为了熟悉 APIServer 是如何构…...
ICSE‘25 LLM Assistance for Memory Safety
不知道从什么时候开始,各大技术社区,技术群聊流行着 “用Rust重写!” ,放一张图(笑死… 这不, 随着大模型技术的流行,大家都在探索如何让大模型自动完成仓库级别(全程序)的代码重构,代码变换(Refactor&…...
《十七》浏览器基础
浏览器:是安装在电脑里面的一个软件,能够将页面内容渲染出来呈现给用户查看,并让用户与网页进行交互。 常见的主流浏览器: 常见的主流浏览器有:Chrome、Safari、Firefox、Opera、Edge 等。 输入 URL,浏览…...
TikTok 推出了一款 IDE,用于快速构建 AI 应用
字节跳动(TikTok 的母公司)刚刚推出了一款名为 Trae 的新集成开发环境(IDE)。 Trae 基于 Visual Studio Code(VS Code)构建,继承了这个熟悉的平台,并加入了 AI 工具,帮助开发者更快、更轻松地构建应用——有时甚至无需编写任何代码。 如果你之前使用过 Cursor AI,T…...
DeepAnalyze数据结构优化:提升大规模数据处理性能
DeepAnalyze数据结构优化:提升大规模数据处理性能 1. 引言 当你面对几十GB甚至TB级别的数据集时,是不是经常遇到处理速度慢、内存占用高的问题?DeepAnalyze作为一款强大的AI数据分析工具,在处理大规模数据时,数据结构…...
保姆级教程:用Arduino IDE给你的ESP8266写个‘网络诊断’程序,一键排查连接问题
ESP8266网络诊断工具开发实战:从被动排错到主动分析 当你盯着串口监视器里不断滚动的"Connecting..."字样,而ESP8266始终无法连上WiFi时,是否想过——我们本可以做得比盲目重试更聪明?本文将带你开发一个会"思考&q…...
深度解析 Claude Code v2.1.88 源码:技术栈与底层实现全揭秘(基于流出架构资料)
深度解析 Claude Code v2.1.88 源码:技术栈与底层实现全揭秘(基于流出架构资料) 摘要:2026年3月31日,Claude Code v2.1.88 相关技术资料(含TypeScript工程架构、核心模块实现逻辑,合计51.2万行代码量级)公开流出,包含其核心架构、工具系统、安全机制等全部实现细节。…...
WeChatExporter:免费开源工具,三步轻松备份你的微信聊天记录到电脑
WeChatExporter:免费开源工具,三步轻松备份你的微信聊天记录到电脑 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否担心过手机丢失、系统崩…...
告别系统卡顿:RyTuneX全方位性能优化指南
告别系统卡顿:RyTuneX全方位性能优化指南 【免费下载链接】RyTuneX RyTuneX is a cutting-edge optimizer built with the WinUI 3 framework, designed to amplify the performance of Windows devices. Crafted for both Windows 10 and 11. 项目地址: https://…...
如何用3分钟搭建深度学习的漫画翻译流水线?BallonsTranslator深度解析
如何用3分钟搭建深度学习的漫画翻译流水线?BallonsTranslator深度解析 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项…...
告别除法器!用BCD8421码在Nexys4 DDR FPGA上高效驱动8位数码管(附完整Vivado工程)
基于BCD8421码的FPGA数码管驱动优化设计与实现 在数字系统设计中,FPGA开发者经常面临如何在有限硬件资源下实现高效数据转换的挑战。传统方法使用除法器进行二进制到十进制转换,不仅消耗大量逻辑资源,还会引入额外的时序延迟。本文将深入探讨…...
win-acme证书自动续期架构深度解析:从故障排查到高可用部署
win-acme证书自动续期架构深度解析:从故障排查到高可用部署 【免费下载链接】win-acme Automate SSL/TLS certificates on Windows with ease 项目地址: https://gitcode.com/gh_mirrors/wi/win-acme 技术背景与挑战 在当今云原生和微服务架构盛行的时代&am…...
GPU Burn:多GPU压力测试的终极解决方案
GPU Burn:多GPU压力测试的终极解决方案 【免费下载链接】gpu-burn Multi-GPU CUDA stress test 项目地址: https://gitcode.com/gh_mirrors/gp/gpu-burn 在高性能计算与深度学习领域,GPU的稳定性直接决定了系统的可靠性。作为一款专注于NVIDIA显卡…...
面试复盘(Debrief)的艺术:挂了面试不可怕,如何通过感谢信获取真实Feedback并为下次“埋伏笔”?
在2026年竞争极其激烈的北美科技求职市场中,即使是背景最优秀的候选人,也必然会经历面试失败。在工业界的招聘漏斗中,由于技术栈匹配度、团队预算(Headcount)变动或单纯的竞争者过强,收到拒信(R…...
