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

文章目录

  • 🌲序言
  • 🌴前端代码的引入
  • 🎋约定前后端交互接口
  • 🍃后端服务器代码实现
    • 🚩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.hqwc.cn/news/412491.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx入门学习

nginx简介 nginx 是什么?用来干嘛的 通俗解释&#xff1a;客户端向服务器请求时&#xff0c;提供让多个服务器一起处理请求的东西 是一个反向代理服务器&#xff0c;能够提供负载均衡&#xff0c;和进行反向代理的功能 正向代理&反向代理 客户端向代理服务器请求&#…

Leetcode24-找到两个数组中的公共元素(2956)

1、题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;它们分别含有 n 和 m 个元素。 请你计算以下两个数值&#xff1a; 统计 0 < i < n 中的下标 i &#xff0c;满足 nums1[i] 在 nums2 中 至少 出现了一次。 统计 0 < i < m 中的下标 i &…

Docker安装Nginx并部署MySQL容器构建

一.MySQL容器的构建 1.创建MySQL根目录及配置文件夹&data文件夹 mkdir -p mysql/{conf,data} 2.上传配置文件 将配置文件上传到conf文件夹&#xff08;数据库配置文件已放到置顶资源中&#xff09; 3.命令构建MySQL容器 /soft/mysql/conf/my.cnf:/etc/my.cnf目录为我们…

CSS实现的 Loading 效果

方式一、纯CSS实现 代码&#xff1a;根据需要复制 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>CSS Animation Library for Developers and Ninjas</title><style>/* ---------------…

Dubbo服务暴露机制解密:深入探讨服务提供者的奥秘【九】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Dubbo服务暴露机制解密&#xff1a;深入探讨服务提供者的奥秘【九】 前言服务暴露机制简介服务注册与发现协议选择与拓展动态代理实现结语&#xff1a; 前言 在分布式系统中&#xff0c;服务的暴露是…

【React】Redux的使用详解

文章目录 Redux的三大原则Redux官方图react-redux使用 1、创建store管理全局状态​ 2、在项目index.js根节点引用 3、 在需要使用redux的页面或者组件中&#xff0c;通过connect高阶组件映射到该组件的props中 redux中异步操作如何使用redux-thunkcombineReducers函数 Re…

IPv6自动隧道---6to4隧道

IPv6 over IPv4自动隧道特点 由于IPv4兼容IPv6隧道要求每一个主机都要有一个合法的IP地址,而且通讯的主机要支持双栈、支持IPv4兼容IPv6隧道,不适合大面积部署。目前该技术已经被6to4隧道所代替。 6to4隧道 集手动隧道和自动隧道的优点于一身,提出6to4的目的是为IPv4网络…

目标检测开源数据集——道路坑洼

一、危害 对车辆的影响&#xff1a;道路坑洼会导致车辆行驶不稳&#xff0c;增加车辆的颠簸&#xff0c;不仅影响乘坐舒适度&#xff0c;还可能对车辆的悬挂系统、轮胎等造成损害。长期在坑洼路面上行驶&#xff0c;车辆的减震系统、悬挂系统等关键部件容易受损&#xff0c;进…

【计算机组成与体系结构Ⅱ】多Cache一致性的模拟分析(实验)

实验八&#xff1a;多Cache一致性的模拟分析 一、实验目的 1&#xff1a;加深对多 Cache 一致性的理解。 2&#xff1a;进一步掌握解决多 Cache一致性的目录协议和监听协议的基本思想。 3&#xff1a;掌握在各种情况下&#xff0c; 目录协议和监听协议是如何工作的&#xf…

Jupyter Notebook

2017年左右在大学里都听说过Jupyter Notebook&#xff0c;并且也安装用了一段时间&#xff0c;后来不知道什么原因没有用了。估计是那时候写代码的时候多一些&#xff0c;因为它可以直接写代码并运行结果&#xff0c;现在不怎么写代码了。 介绍 后缀名为.ipynb的json格式文件…

雍禾植发为地球种下发际线,雍禾医疗以公益名义为消费者种下希望

“绿水青山才是金山银山”&#xff0c;绿色现已成为新时代中国的鲜明底色。天更蓝&#xff0c;水更清&#xff0c;人与环境和谐发展已深入人心。位于内蒙古自治区阿拉善盟西部的额济纳旗常年干旱少雨&#xff0c;风沙肆虐&#xff0c;这里亟需被植上一片森林&#xff0c;为地球…

Grind75第9天 | 733.图像渲染、542.01矩阵、1235.规划兼职工作

733.图像渲染 题目链接&#xff1a;https://leetcode.com/problems/flood-fill 解法&#xff1a; 可以用深度优先搜索和广度优先搜索。 深度优先搜索。每次搜索到一个方格时&#xff0c;如果其与初始位置的方格颜色相同&#xff0c;就将该方格的染色&#xff0c;然后继续对…