SSM开发书评网30:后台三:新增图书;(本篇博客特别说明两点:【介绍了java的HTML解析组件:jsoup】,【能感受到,图文混排的内容,在后端是如何处理的、在数据库中是如何存储的】)

说明:

(1)本篇博客内容说明:

(2)本博客的几个点:

          ● java中一款不错的HTML解析器:jsoup;

          ● 其实,目前来看,只要【和前端对接好接口,设置好url,明确了来回的数据格式】,单纯的开发后端的CRUD,其实工作量不大;由此能够感受到,作为主栈是后端的开发者来说,CRUD比较简单;真正复杂和牛批的是:【底层数据库优化】、【并发】、【分布式】、【算法】、【引擎】、【设计模式】、【中间件】、【目前成熟框架的源码】、【计算机组成原理】、【网络协议】、【大数据】、【系统架构优化】等;

          ● 通过本篇博客的案例,也多少能明白,图文混排的内容,在后端是如何处理的、在数据库中是如何存储的;

目录

一:前置分析;

二:后台接口开发;

1.在BookService接口中,定义一个新增图书的方法:createBook()方法;

2.在BookServiceImpl中,去实现createBook()方法;

附:jsoup简介,在工程中引入jsoup;

3.在MBookController类中,创建新增图书的方法:createBook()方法;

4.运行效果;


一:前置分析;

然后,需要注意,我们要求wangEditor最少需要传入一张图片;而且,其中的第一张图会默认作为该图书的封面;

……………………………………………………

之所以是【localhost/management/book/create】这个地址:下面给出说明:

……………………………………………………

表单提交的数据分析:

      ● 当我新增图书时,evaluation_score和evaluation_quantity都是0,这个很容易理解;

      ● 我们要求wangEditor最少需要传入一张图片;而且,其中的第一张图会默认作为该图书的封面;而wangEditor中的内容就是description,其实一段HTML片段;所以,description这个HTML片段中的,第一个<img>就是cover,这个需要我们在后端处理一下;为了能更好的解决这个需求,引入了java中一款不错的HTML解析器:jsoup;


二:后台接口开发;

1.在BookService接口中,定义一个新增图书的方法:createBook()方法;

2.在BookServiceImpl中,去实现createBook()方法;

附:jsoup简介,在工程中引入jsoup;

访问jsoup的官网:【https://jsoup.org/】;

在pom.xml中,引入jsoup依赖;

        <!--java的HTML解析器:jsoup;-->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.12.1</version>
        </dependency>

老生常谈的点:引入新依赖后,如有需要,记得添加到发布中去;

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了;下篇博客要做的就是,在后台系统首页上,展示图书的数据表格;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值