【JavaEE进阶】 图书管理系统开发日记——壹

news/2024/11/28 9:44:11/

文章目录

  • 🌲序言
  • 🌴前端代码的引入
  • 🎋约定前后端交互接口
  • 🍃后端服务器代码实现
    • 🚩UserController.java
    • 🚩BookController.java
  • ⭕总结

🌲序言

该图书管理系统,博主将一步一步进行实现。一边学习新的知识,一边对该项目进行完善。

所以此时所用技术或方法不对的地方后面都会进行一系列的修改和提升,有心去的小伙伴可以跟着博主一起开始这一段旅程。

🌴前端代码的引入

关于前端相关代码的书写与修改,由于博主是搞后端的,所以博主这里就不讲解了,这里直接给出。

遇事问春风乄的gitee

代码引入:
在这里插入图片描述

前端界面展示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🎋约定前后端交互接口

我们先实现部分功能如下:

在这里插入图片描述
在这里插入图片描述

根据需求可以得知,后端需要提供两个接⼝

  1. 账号密码校验接⼝:根据输⼊⽤⼾名和密码校验登录是否通过

  2. 图书列表:提供图书列表信息

接⼝定义

[URL]
POST /user/login
[请求参数]
name=admin&password=admin
[响应]
true //账号密码验证成功
false//账号密码验证失败

图书列表展⽰

[URL]
POST /book/getList
[请求参数][响应]
返回图书列表
[{"id": 1,"bookName": "活着","author": "余华","count": 270,"price": 20,"publish": "北京⽂艺出版社","status": 1,"statusCN": "可借阅"},
...
]

字段说明

id图书ID
bookName图书名称
author作者
count数量
price定价
publish图书出版社
status图书状态1-可借阅,其他-不可借阅
statusCN图书状态中⽂含义

🍃后端服务器代码实现

这里我们使用应用分层的思想,分别创建四个包如下:
在这里插入图片描述

  • controller:里面存放接收前端发送的请求,对请求进⾏处理,并响应数据的代码

  • service:里面存放处理具体的业务逻辑的代码。

  • dao:里面负责数据访问操作,包括数据的增、删、改、查

  • model:里面存放一些固体对象

接下来每个包下面创建以下文件
在这里插入图片描述

🚩UserController.java

UserController.java 里面存放的是登录相关的代码,负责实现登录用户名与密码的验证。这里并没有进行分层(后续会进行分层)

由于没有连接数据库,咱们这里只用字符串代替验证。访问路径遵守接口文档的规定即可。代码实现如下:

@RequestMapping("/user")
@RestController
public class UserController {@RequestMapping("/login")public boolean login(String name, String password, HttpSession session){//账号或密码为空if (!StringUtils.hasLength(name) || !StringUtils.hasLength(password)){return false;}//模拟验证数据, 账号密码正确if("遇事为春风乄".equals(name) && "666666".equals(password)){session.setAttribute("userName",name);return true;}//账号密码错误return false;}
}

🚩BookController.java

关于图书列表展示这里我做了一个应用分层

BookController.java这里面实现的图书列表信息的返回。具体实现逻辑我放在了BookService.java里面。

因为当前阶段并没有导入数据库,所以我们这里也是使用内存进行存储。并在BookDao.java进行了数据增加操作

对于Book类我放在了BookInfo.java中进行实现,并且在管理对象方面,使用了spring进行管理

代码实现较简单,这里就不进行讲解了。代码实现如下:
UserController.java

@RequestMapping("/user")
@RestController
public class UserController {@RequestMapping("/login")public boolean login(String name, String password, HttpSession session){//账号或密码为空if (!StringUtils.hasLength(name) || !StringUtils.hasLength(password)){return false;}//模拟验证数据, 账号密码正确if("遇事为春风乄".equals(name) && "666666".equals(password)){session.setAttribute("userName",name);return true;}//账号密码错误return false;}
}

BookController.java

@RequestMapping("/book")
@RestController
public class BookController {@Autowiredprivate BookService bookService;@RequestMapping("/getList")public List<BookInfo> getList(){//获取数据List<BookInfo> books = bookService.getBookList();return books;}
}

BookService.java

@Componentpublic class BookService {@Autowiredprivate BookDao bookDao ;public List<BookInfo> getBookList(){List<BookInfo> books = bookDao.mockData();for (BookInfo book:books){if (book.getStatus()==1){book.setStatusCN("可借阅");}else {book.setStatusCN("不可借阅");}}return books;}
}

BookDao.java

@Component
public class BookDao {/*** 数据Mock 获取图书信息* @return*/List<BookInfo> books = new ArrayList<>();public List<BookInfo> mockData(){for (int i=0;i<5;i++){BookInfo book = new BookInfo();book.setId(i);book.setBookName("书籍"+i);book.setAuthor("作者"+i);book.setCount(i*5+3);book.setPrice(new BigDecimal(new Random().nextInt(100)));book.setPublish("出版社"+i);book.setStatus(1);books.add(book);}return books;}
}

BookInfo.java

@Data
@Component
public class BookInfo {//图书IDprivate Integer id;//书名private String bookName;//作者private String author;//数量private Integer count;//定价private BigDecimal price;//出版社private String publish;//状态 0-⽆效 1-允许借阅 2-不允许借阅private Integer status;private String statusCN;//创建时间private Date createTime;//更新时间private Date updateTime;
}

⭕总结

关于《【JavaEE进阶】 图书管理系统开发日记——壹》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!


http://www.ppmy.cn/news/1324164.html

相关文章

Microsoft Word 删除空行

Microsoft Word 删除空行 1. 删除空行1.1. 替换1.2. 段落标记 References 1. 删除空行 1.1. 替换 1.2. 段落标记 特殊格式 -> 段落标记 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

220v变5vic-220v变直流5v小封装220MA电流

220v变5v ic-220v变直流5v小封装220MA电流&#xff0c;交流或者直流输入都可以&#xff0c;交流输入的时候输入端需要先整流&#xff08;半波、全波都可以&#xff09;&#xff0c;40v~265v输入&#xff0c;经过220v变5v ic芯片电路&#xff0c;稳定输出5v200MA电流&#xff0c…

压力测试+接口测试(工具jmeter)

jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使用方便&#xff0c;是一个比较轻量级的测试工具&#xff0c;使用起来非常简单。因 为jmeter是java开发的&#xff0c;所以运行的时候必须先要安装jdk才可以。jmeter是…

Vue3新特性defineModel()便捷的双向绑定数据

官网介绍 传送门 配置 要求&#xff1a; 版本&#xff1a; vue > 3.4(必须&#xff01;&#xff01;&#xff01;)配置&#xff1a;vite.config.js 使用场景和案例 使用场景&#xff1a;父子组件的数据双向绑定&#xff0c;不用emit和props的繁重代码 具体案例 代码实…

wins安装paddle框架

一、安装 https://www.paddlepaddle.org.cn/install/quick?docurl/documentation/docs/zh/install/pip/windows-pip.html 装包&#xff08;python 的版本是否满足要求&#xff1a; 3.8/3.9/3.10/3.11/3.12&#xff0c; pip 版本为 20.2.2 或更高版本 &#xff09; CPU 版:…

【USTC】verilog 习题练习 21-25

21 基于端口名称的实例化 题目描述 创建一 verilog 电路&#xff0c;实现对模块 mod_a 基于端口名称的实例化&#xff0c;如下图所示&#xff1a; 其中mod_a模块的代码为&#xff1a; module mod_a (output out1,output out2,input in1,input in2,input in3,in…

【树莓派】网线远程连接电脑和树莓派,实现SSH连接

目录 1、硬件连接&#xff1b; 2、电脑端&#xff1a; 3、查找树莓派的IP地址 4、开启树莓派的SSH接口 5、putty 6、命令行 参考文章 通过网线连接笔记本与树莓派 开启SSH和VNC功能 无显示器安装树莓派 实现&#xff1a;打开putty输入树莓派地址使用ssh方式登陆&…

Java-NIO篇章(2)——Buffer缓冲区详解

Buffer类简介 Buffer类是一个抽象类&#xff0c;对应于Java的主要数据类型&#xff0c;在NIO中有8种缓冲区类&#xff0c;分别如下&#xff1a; ByteBuffer、 CharBuffer、 DoubleBuffer、 FloatBuffer、 IntBuffer、 LongBuffer、 ShortBuffer、MappedByteBuffer。 本文以它的…