00:00
好,那我们要想来解决这个问题的话,那我们就需要先来学习一个注解,这个注解呢叫做it request body,叫做请求体。然后这个注解是用在哪的?一样也是用在咱们的控制器方法的行参位置的,那它可以干啥?大家想想,Request body又是用在咱们的控制器方法的行参的,那它的作用不就是帮助我们来获取咱们的请求体重的内容的吗?对不对?换句话来说,如果我们当前在咱们的行参上加上了一个a request body这个注解,那我们就可以把咱们的这个请求体中的内容,然后来为当前的行参进行复持,OK吧,好啊,行,那我们在这呢,然后咱们来给大家演示一下,然后那我们就直接在我们的这个方法里面去写吧,OK吧,然后咱们怎么做呢?大家注意非常简单,然后我们只需要啊,在这个方,在这个控制器方法的这个行参位置,你再去设置一个形参,比如说它叫做string,叫T,叫request body,叫request body。
01:08
能看懂吧,叫string,然后request body,但是呢,我们在这把它给写出来之后,大家想想你这是啥意思。啊,大家想一下控制器方法的形参默认是用来获取谁的,默认是不是应该是来获取咱们当前的name等于value and name等于value方式的请求参数的,对不对,对吧?但是我们现在呢,咱们需要来获取请求体的,怎么获取,直接在这用一个request body注解来对它进行标识就可以啊,然后下面大家来看,咱们在这直接把它给输出,然后我们现在来重新部署,大家看。好,就通过这个注解啊,就可以直接来将我们的。请求体中的内容跟咱们的行参。来进行绑定好。然后我们下面咱们再来一个刷新,然后咱们来点击大家看这个没问题。
02:03
然后我们来找到咱们的I idea的控制台,然后大家看啊,你看这个有问题没有,然后这是不是就是我们当前咱们在咱们的请求题里面看到的内容啊,对不对?来咱们再找到network,然后来找到它,大家看一下啊,点击这个view source,因为这是浏览器给我们处理之后的结果,然后咱们点击之后,大家看,你看这个内容是不是跟咱们在这儿的这个内容是一模一样的,对不对?OK吧,行啊好,那我们现在呢,咱们看到了这个内容之后,那说明我们的request body确实是可以来获取请求体,对吧?那我们在这咱们就把笔记来写一下,大家注意,首先呢,咱们的第一个注解,然后叫做it request body body body,它的作用是干什么的?然后将咱们的请求体中,请求体请求体中的内容对吧?然后和咱们控制器方法的行参,然后进行绑定,哎,进行绑定好,然后所以说我们现在只需要在我们的行参上来加上这样的一个注解,那我们是不是当前这个行参就可以获取请求体中的内容了,对吧?但是大家说你获取这东西它有用吗?
03:20
没啥用吧?对不对,咱们获取这个东西是不是应该是没有什么用的,你获取它之后,你不还得自己解析,我们获取它最主要的,那最最主要的作用是用来干嘛的,我们是不是需要来获取里面存储的数据啊,来获取用户名的值叫order me,来获取password的值叫做123456,大家说是不是?能看懂吧,好,然后所以说你哪怕你获取了这个字符串,它有啥用呢?它有用吗?它没有任何作用,我们还得自己去解析它,那我们之前咱们是怎么做的,大家知道不。我们之前咱们是怎么做的。啊。如果说咱们在这个web阶段的时候,大家还有印象的时候,大家还有印象的话啊,大家想一下咱们是怎么做的,然后我们是通过咱们处理杰森的架包,然后叫做格森,其实就是基森,还有咱们的杰克森,然后通过这两种技术对吧,然后把我们当前咱们字符串类型的请求体的内容,把它给转换成了咱们的Java对象。
04:25
把它给转换成了咱们的Java对象,因为如果你只获取一个字符串,说实话这个数据咱们还得自己解析,怎么解析,把大括号去掉,通过逗号风格,然后再通过冒号风格,然后来获取这个ain和123456,那这就老麻烦了。所以说我们之前是不是来使用了第三方价包,将咱们的。这个杰森字符串,然后从请求体中来获取的杰森字符串给转换成了咱们的Java对象,对不对?好,那我们现在呢,咱们之前用的是第三方价包来实现的,那我们现在呢,大家注意,而且那个转换的过程也都是我们自己写的,至于怎么该怎么实现啊,没有学习过的同学也无所谓,那我们以后咱们用的都是VC,大家知道spring VC中该如何去做就可以,OK吧,行,那我们在spring VC中,然后该如何把咱们当前杰森字符串,就是我们的请求体中的这个杰森格式的请求参数来转换成咱们的Java对象呢?大家注意,你看嘛,这不是杰森对象吗?那杰森对象跟咱们的实体类对象,跟咱们的map集合是不是都很像啊?它是键值,对,实体类里面是属性名和属性值,Map集合里面也是键值,对,所以说我们就可以通过咱们的这个SPVC为我们提供的方式,直接将它给转换为谁啊转换。
05:48
跟咱们的实体类对象,或者是咱们当前的map集合OK吧,那该怎么写来下面大家注意,咱们在这呢,再给大家写个超链接,这加一个换行,然后我们现在是使用谁呀?是使用it request body注解对吧?好,然后来处理处理。
06:11
好,然后来处理咱们的接省格式的请求参数,OK,然后咱们在这呢,叫做test request body,叫test request body啊行,下面咱们在这再来写个阿贾克斯,大家注意其实没啥区别,那咱们只要呢,把这些功能给分开啊好,然后咱们来看还是然后点post.post。好,然后为什么不用这个X,我再跟大家说一遍,因为X里面你要写的是键值对比较麻烦,而我们在get或post里边,咱们写的直接就是参数,你不需要再写这个键能是不是好。然后为什么咱们在这不用点get,因为我们当前咱们要来测试的是把我们当前的阶层格式的请求参数,然后放在请求体中传输到服务器,而咱们的get请求方式没有请求体,只有post有。
07:08
OK吧,行,然后这里面大家看咱们当前要处理的这个请求,换个行。好,然后咱们当前要处理的这个请求啊,然后来复制一下,好,然后test,然后斜线叫做request body request body。OK吧,然后下面咱们再加上一个杰森行,然后设置完之后,然后下面呢,我们再来看,咱们要传输一个杰森格式的请求参数了,比如说咱们还是一样的啊,Username,然后order me,然后呢,Password 123456,咱们再设置一个把年龄冒号23,然后再设置一个基低押金的冒号,在这设置一个难OK行,就这样,然后再往下的话,那我们是不是就要来写Z对不对,当然呢,大家注意这里面它不止有一个then啊,它其实还有一个什么,还有一个catch是我们请求失败的时候要执行的函数,然后这个呢,Then是请求成功要执行的函数啊response,然后一个箭头函数,然后下面呢,我们是不是就可以把咱们当前的response中封装的服务器响应回来的数据,然后进行输出了?
08:22
OK吧,行,然后下面呢,我们把这个请求,然后来处理一下,来找到我们当前咱们的这个控制层a request mapping括号,然后这是我们要处理的请求,Public,然后返回谁还是word,对吧,为什么?因为我们现在你不能返回一个字符串,然后让它干什么,让它进行一个页面跳转,因为这是阿贾克斯请求,对吧,好叫test request body request body,好,然后再往下大家看啊,怎么写啊,我们现在呢,咱们这样啊,我先响应到浏览器一个数据,然后这个是啊,Response,咱们先把它给加上so that response。
09:05
OK,然后来处理一下异常,然后这个呢,咱们就叫做hello request body,行,然后我们现在咱们要做的事情是什么,大家知道吧,我们现在是要把我们的这个请求体中杰森格式的请求参数转换成咱们的Java对象的,那大家就要看它的格式了,如果这是一个Jason对象,那我们是不是可以把它给转换为实体类对象也行,把它给转换为map集合也行。对吧,然后呢,在这咱们怎么写呢?大家看啊,然后呢,有它可以实现,而且这个过程非常简单,但是呢,咱们一定要满足一些条件啊,好,大家看好啊,然后咱们在这要实现的功能是干什么的?来使用咱们的it request body,这个功能也是由谁来实现的,这个注解来实现的,使用request body,然后注解,然后将Jason格式的请求参数,然后转换,为什么加va对象,Java对象,这个大家看好啊。
10:10
好,然后呢,那我们现在咱们的条件要满足,要满足三个条件啊,然后要满足三个条件,首先第一个条件,大家注意要导入什么,要导入咱们的杰克逊的价包。导入杰克森的依赖啊,为什么?因为在这个过程中,然后他默认来调用的是杰克森的功能来实现的,然后我们当前咱们的第二个要求,大家看啊,我们需要干啥,然后我们需要在spring mvc,然后的配置文件中,然后来设置谁。啊,这个标签咱们已经设置过了啊,大家注意,这个标签大家不需要再去设置了,就这个东西开启MVC的注解驱动看好,这已经是我们第三个地方需要用到它了啊,然后第三个条件大家注意,第三个就是我们该如何使用了。
11:04
知道吧,然后在哪,在咱们的处理请求的处理请求的控制器方法的行参位置。行参位置行参行参对吧,然后位置,然后直接来设置一个行参。然后直接设置设置对吧,然后咱们的Jason格式的请求参数要转换的Java类型的行参,这个大家能听懂是啥意思吧,就是直接来设置一个阶层格式的这个请求参数,要转换的Java类型的这个型参,比如说你要转换为实体的类型,那咱们在这个控制器方法里面直接来设置一个啥,直接来设置一个这个实体类类型的型材,如果你要转换为map集合,咱们就设置一个map类型的型材,知道吧,然后呢,再使用什么,然后使用咱们的it request body,然后注解标识即可,标识然后即可好。
12:11
那咱们就来测试一下呗,比如说我们现在咱们传输过来的,咱们按一步一步来啊,首先导入杰克逊的依赖,那咱们就来导入一下,大家看啊,把这个东西直接复制,然后放在我们当前的po点叉ML中,然后放在这个位置。啊,然后来导入更新,然后呢,第一步完成之后,第二步咱们需要来开启MVC的注解驱动,这已经设置过了啊,所以说这个标签大家以后肯定忘不了,你也肯定少不了,为什么?因为太多的功能里面需要用到它了,知道吧,好,然后第三个呢,那咱们就需要在哪啊,在我们当前的控制器方法中来设置一个什么我们的阶层格式的请求参数要转换成的Java Java类型的型参,比如说我在这来创建一个啥,你看咱们传输过来的数据,Username password age gender,那咱们就创建一个user实体类呗,创建一个包,这个叫做po。
13:11
然后呢,咱们来溜一个user。好,然后首先啊是in tIgEr类型的ID,然后string类型的username,然后再往下是string类型的password,好,然后再往下是in类型in tIgEr类型T,对吧,然后age,然后最后一个是string类型的G金,OK,好,然后咱们来设置它的有参构造,然后还有它的无参构造。然后再来设置它的图死方法。然后再来设置它的set跟get方法就OK了啊行,设置完之后大家看。在这怎么写啊,然后直接创建一个优的对象就行,知道吧,优类型的行参,但是你只这样创建行不行,大家说你直接这样创建的话,它表示啥。
14:11
它是不是来表示的是获取的是咱们的user name等于value and name等于value这种方式的形成这种方式的请求参数,而我们现在咱们要来获取的是杰森格式的请求参数,大家记好了啊,所以说我们要想来获取,咱们必须得加上一个注解叫it request body。这个大家一定要看好,比我们之前写的简单太多了啊,我们之前咱们写的时候,咱们必须要把这整个过程咱们都自己去写一遍,虽然说它可以封装对吧,然后但是咱们还需要自己封装完之后,然后封装到工具类中,然后调用工具类中的方法,但是在咱们的SPA微中,我在这儿是不是直接干嘛呀,是不是直接来加上一个注解就可以了。直接把它给放在控制器方法,控制器方法的行参位置,你要转换为什么类型的,你要转换为Java,咱们Java中的什么类型的一个对象,对吧,直接设置这个类型的形参,再用注解来标识它来下面咱们soot,然后直接把U给输出好啊。
15:15
那下面咱们来一个重新部署,大家看。好,然后咱们把这下面这些啊给它清空掉。然后呢,我们再来找到咱们的首页来一个刷新,大家看咱们点它就行,然后我们现在咱们点击大家看hello request body没问题,然后咱们现在呢,咱们再来看咱们的ideal的控制台,大家看一下看有没有了。这是不是就有了呀。对不对,然后user ID,因为咱们传过来的没有ID嘛,是不是啊,然后username password a还有gender是不是啊,这是不是跟咱们之前咱们自己写代码实现的效果是一样的,OK吧,行啊,好,那我们现在传输过来的是一个杰森对象,那所以咱们除了可以将它转换为咱们的实体类对象之外,我们是不是也可以将它给转换为咱们的map集合,是不是啊,所以说在这大家注意,我们在这再创建一个方法,然后这个方法呢,咱们名字一样,咱们把这个参数给改了,直接改成啥,直接改成map,然后它的键是string类型,它的值是object的类型,能看懂吧,然后在这直接写个map OK完事,然后下面咱们直接把map,然后给输出,大家注意,你不需要做任何的更改,你只需要去考虑一下我们当前需要用什么类型来接收它就行。
16:45
比如说你当前传输过来的这个杰森对象对吧?然后它有相对应的实体类,那咱们就用实体类类型,这个之前咱们在讲my be的时候就说过,当我们从数据库中把一条数据查询出来,你有相对应的实体类,咱们就用实体类,没有相对应的实体类就用什么,然后用咱们的map集合,咱们在这呢也是。
17:08
这个大家能看懂吧,在这也是有相对应的实体类,就用实体类,没有相对应的实体类,然后就用啥呀,Map集合就行啊好,然后我们在这咱们再来一个重新部署,然后大家看这个效果是一样的啊。好,然后现在咱们在浏览器中,然后咱们再次来刷新,然后大家看没问题,然后我们在这看一下它输出的,你看这里面是不是就是咱们map部集合中的键值对,Username password age,还有金nder,这里面会有ID吗?不会,因为我们之前咱们用的是实体类,所以说其中的属性都是固定的,但是我们现在用了mapb集合,大家说mapb集合里面的键值对固定吗?不固定啊,好,所以说大家注意,这就是我们使用request的body注解,然后呢,将杰森格式的请求参数转换为Java对象,它的三个步骤,首先第一步咱们要导入杰克son的依赖,然后也就是说在这个过程中,其实它在底层是通过咱们的杰克son的代码,杰克son的功能,然后将咱们的这个请求体中的这个杰son格式的请求参数转换为Java对象的知道吧,然后咱们spring VC的配置文件中必须去开启MVC的注解驱动,然后第三个条件就是什么?就是我们的用法了。咱们只需要在我们的。
18:29
控制器方法的行参,然后来设置我们的这个请求参数要转换成的Java类型的行参,再通过注解标识即可。OK吧,大家一定要会用,因为这个东西以后咱们用的贼多,知道吧,啊,用的非常多啊。
我来说两句