说明:
(1)本篇博客内容说明:
(2)本博客的几个点:
● java中一款不错的HTML解析器:jsoup;
●其实,目前来看,只要【和前端对接好接口,设置好url,明确了来回的数据格式】,单纯的开发后端的CRUD,其实工作量不大;由此能够感受到,作为主栈是后端的开发者来说,CRUD比较简单;真正复杂和牛批的是:【底层数据库优化】、【并发】、【分布式】、【算法】、【引擎】、【设计模式】、【中间件】、【目前成熟框架的源码】、【计算机组成原理】、【网络协议】、【大数据】、【系统架构优化】等;
●通过本篇博客的案例,也多少能明白,图文混排的内容,在后端是如何处理的、在数据库中是如何存储的;
目录
一:前置分析;
然后,需要注意,我们要求wangEditor最少需要传入一张图片;而且,其中的第一张图会默认作为该图书的封面;
……………………………………………………
之所以是【localhost/management/book/create】这个地址:下面给出说明:
……………………………………………………
表单提交的数据分析:
● 当我新增图书时,evaluation_score和evaluation_quantity都是0,这个很容易理解;
● 我们要求wangEditor最少需要传入一张图片;而且,其中的第一张图会默认作为该图书的封面;而wangEditor中的内容就是description,其实一段HTML片段;所以,description这个HTML片段中的,第一个
就是cover,这个需要我们在后端处理一下;为了能更好的解决这个需求,引入了java中一款不错的HTML解析器:jsoup;
二:后台接口开发; 1.在BookService接口中,定义一个新增图书的方法:createBook()方法;
2.在BookServiceImpl中,去实现createBook()方法;
附:jsoup简介,在工程中引入jsoup;
访问jsoup的官网:【】;
在pom.xml中,引入jsoup依赖;
org.jsoup
jsoup
1.12.1
老生常谈的点:引入新依赖后,如有需要,记得添加到发布中去;
3.在MBookController类中,创建新增图书的方法:createBook()方法;
/**
* 新增图书
* @param book
* @return
*/
@PostMapping("/create")
@ResponseBody
public Map createBook(Book book) {
Map result = new HashMap();
try {
book.setEvaluationQuantity(0);
book.setEvaluationScore(0f);
//获取图书的description属性值,并解析
Document document = Jsoup.parse(book.getDescription());
//获取图书description属性中的,第一个图片的元素对象
Element img = document.select("img").first();
//获取改图片元素的,src属性值
String cover = img.attr("src");
//给book对象的cover属性,赋值
book.setCover(cover);
bookService.createBook(book);
result.put("code", 0);
result.put("msg", "success");
} catch (BussinessException ex) {
ex.printStackTrace();
result.put("code", ex.getCode());
result.put("msg", ex.getMsg());
}
return result;
}
说明:
(1)url要对的上;
(2)前端表单的输入项,就是针对Book来的,而且其命名符合Book属性;所以,后端可以用Book实体类去接收;
(3)然后,就是补全Book的属性:其中用到了java中一款不错的HTML解析器:jsoup;
(4)然后,就是调用BookService中定义的createBook方法;并根据前端的要求返回对应的code和mag信息;
(5)还有一点就是,BookService的createBook()方法没有抛BussinessException异常,但为什么Controller这儿要捕获这个异常呐?:这一点前面说过,BookService的createBook()方法现在没抛BussinessException异常,不代表以后新业务需要来的时候不抛;;;所以,Controller这儿算是提前准备了一手;
4.运行效果;
……………………………………………………
继续执行:可以看到Book的主键ID也回填了:(背后,是Mybatis-Plus已经帮我们做了;)
……………………………………………………
放开断点,让其继续执行:底层数据库也没问题;
……………………………………………………
然后,在前台系统中,也能看到我们新增的那本图书;
至此,图书的新增功能就OK了;下篇博客要做的就是,在后台系统首页上,展示图书的数据表格;
暂无评论内容