文章目录
- 🎋前言
- 🌲需求分析
- 🎄约定前后端交互接口
- 🌳实现服务器代码
- 🚩控制层
- 🚩业务层
- 🚩数据层
- 🍃修改前端代码
- ⭕总结
🎋前言
这次我们来实现图书管理系统的增加图书模块。
🌲需求分析
我们先来看一下需要达到的效果。
- 点击添加图书按钮,跳转以下界面
- 添加图书时,若有图书信息没有填写,则会返回错误信息
- 成功添加图书后跳转至图书列表页,并显示添加图书信息
🎄约定前后端交互接口
根据以上需求,我们可以约定以下接口
[请求]
/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进阶】 图书管理系统开发日记——伍》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!