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

简介: 【JavaEE进阶】 图书管理系统开发日记——伍


🎋前言

这次我们来实现图书管理系统的增加图书模块。

🌲需求分析

我们先来看一下需要达到的效果。

  1. 点击添加图书按钮,跳转以下界面
  2. 添加图书时,若有图书信息没有填写,则会返回错误信息
  3. 成功添加图书后跳转至图书列表页,并显示添加图书信息

🎄约定前后端交互接口

根据以上需求,我们可以约定以下接口

[请求]

/book/addBook

Content-Type: application/x-www-form-urlencoded;charset=UTF-8

[参数]

bookName=图书1&author=作者1&count=23&price=36&publish=出版社1&status=1

[响应]

“” //失败信息, 成功时返回空字符串

我们约定,浏览器给服务器发送⼀个 /book/addBook 这样的HTTP请求,form表单的形式来提交数据服务器返回处理结果,返回""表⽰添加图书成功,否则,返回失败信息.

🌳实现服务器代码

服务器代码依旧采用分层设计的思想

🚩控制层

该层我们使用对象来接受from表单传回来的值。

并对传回来的值判断其合法性,若不合法返回"输⼊参数不合法, 请检查⼊参!"即可

合法则交给业务层进行处理,并进行异常处理。

代码实现如下:

@RequestMapping("/addBook")
public String addBook(BookInfo bookInfo) {
    log.info("添加图书:{}", bookInfo);
    if (!StringUtils.hasLength(bookInfo.getBookName())
            || !StringUtils.hasLength(bookInfo.getAuthor())
            || bookInfo.getCount()==null
            || bookInfo.getPrice()==null
            || !StringUtils.hasLength(bookInfo.getPublish())
            || bookInfo.getStatus() ==null
    ) {
        return "输⼊参数不合法, 请检查⼊参!";
    }
    try {
        bookService.addBook(bookInfo);
        return "";
    } catch (Exception e) {
        log.error("添加图书失败", e);
        return e.getMessage();
    }
}

🚩业务层

因为因为层代码较简单,直接调用数据层代码发回即可

代码实现如下:

public void addBook(BookInfo bookInfo) {   
    bookInfoMapper.insertBook(bookInfo);
}

🚩数据层

使用注解实现对数据库的操作即可

实现带代码如下:

@Insert("insert into book_info (book_name,author,count,price,publish,status) " +
        "values (#{bookName},#{author},#{count},#{price},#{publish},#{status})")
Integer insertBook(BookInfo bookInfo);

🍃修改前端代码

关于前端代码,我们只需要修改添加页代码即可。

代码修改部分如下:

function add() {
    $.ajax({
        type: "post",
        url: "/book/addBook",
        data: $("#addBook").serialize(),
        success: function (result) {
            if (result == "") {
                location.href = "book_list.html"
            } else {
                console.log(result);
                alert("添加失败:" + result);
            }
        },
        error: function (error) {
            console.log(error);
        }
    });
}

⭕总结

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

相关文章
|
7月前
|
存储 人工智能 运维
MoE大模型迎来“原生战友”:昇腾超节点重构AI基础设施
大模型训练中,MoE架构逐渐成为主流,但也面临资源利用率低、系统稳定性差、通信带宽瓶颈三大挑战。传统AI集群难以满足其需求,而“昇腾超节点”通过自研高速互联协议、软硬件协同调度、全局内存统一编址及系统稳定性提升等创新,实现384张卡协同工作,大幅提升训练效率与推理性能。相比传统方案,昇腾超节点将训练效率提升3倍,推理吞吐提升6倍,助力MoE模型在工业、能源等领域的规模化应用。5月19日的鲲鹏昇腾创享周直播将深度解析相关技术细节。
451 15
|
人工智能 监控 安全
阿里云 Elastic Enterprise 正式上线!
阿里云正式发布Elastic Enterprise 版!欢迎前来体验!
335 1
|
SQL 存储 NoSQL
贝壳找房基于Flink+Paimon进行全量数据实时分组排序的实践
本文投稿自贝壳家装数仓团队,在结合家装业务场景下所探索出的一种基于 Flink+Paimon 的排序方案。这种方案可以在实时环境对全量数据进行准确的分组排序,同时减少对内存资源的消耗。在这一方案中,引入了“事件时间分段”的概念,以避免 Flink State 中冗余数据对排序结果的干扰,在保证排序结果准确性的同时,减少了对内存的消耗。并且基于数据湖组件 Paimon 的聚合模型和 Audit Log 数据在数据湖内构建了拉链表,为排序结果提供了灵活的历史数据基础。
29133 8
贝壳找房基于Flink+Paimon进行全量数据实时分组排序的实践
|
传感器 机器人
舵机内部结及工作原理浅析
舵机内部结及工作原理浅析
561 2
|
机器学习/深度学习 算法 数据挖掘
R语言在金融分析中扮演重要角色,用于风险管理、资产定价、量化交易、市场预测和投资组合优化。
【7月更文挑战第2天】R语言在金融分析中扮演重要角色,用于风险管理、资产定价、量化交易、市场预测和投资组合优化。其开源、强大的统计功能和丰富的包(如`PerformanceAnalytics`、`quantstrat`、`forecast`)支持从风险评估到策略回测的各种任务。R的灵活性和社区支持使其成为金融专业人士应对复杂问题的首选工具。
555 1
|
算法 UED
探索编程思维:不仅是代码,更是解决问题的艺术
【5月更文挑战第24天】 在数字世界的舞台上,编程不单是一系列指令的排列组合,它更是一种独特的思维方式。本文将深入探讨编程思维的本质及其在问题解决过程中的应用。我们将剖析编程思维如何影响逻辑构建、创新思考和系统分析,并通过实例说明如何将编程原则应用于日常生活和非技术领域。
|
传感器 JSON 编解码
功耗优化 · 方案篇 · Android功耗优化指导规范(2)
功耗优化 · 方案篇 · Android功耗优化指导规范
1674 0
|
Ubuntu
百度搜索:蓝易云【Ubuntu最新版本(Ubuntu22.04LTS)安装nfs服务器】
NFS(Network File System)是一种允许不同计算机之间共享文件的网络文件系统。
388 0
|
SQL 安全 JavaScript
常见漏洞分类
常见漏洞分类
564 0
常见漏洞分类
|
Linux
LINUX打印机报错:ipp error(1034, client-error-document-format-not-supported)
LINUX打印机报错:ipp error(1034, client-error-document-format-not-supported)
4641 0
LINUX打印机报错:ipp error(1034, client-error-document-format-not-supported)