00:00
好,然后下面呢,那我们再来想这样的一个问题。然后我们现在向浏览器响应数据的时候,我们是不是在控制器方法的行参位置,然后来添加了一个response对象,对不对?好,Http solve response类型的行参,那我们以后要想应浏览器数据,咱们都要这样去做吗?大家注意不需要啊,不需要SPV,我们所为我们提供的有更简单的方法,那什么方法呢?大家看啊,然后呢,我们在这呢,还有一个注解,就是说我们下面咱们还需要再来学习一个注解,叫什么注解,It responsibility body注解。大家注意,这个注解咱们用的非常非常的多,非常非常的多啊,咱们可以这样去说,就是如果说大家以后呢,然后我们学习咱们开发的这个项目,用的是前后端分离,对吧,然后咱们的页面中用的发送的请求的方式都是阿贾克斯,那咱们的控制器方法,每一个方法你都要加这个注解。非常非常的方便啊,然后呢,我们来看一下它方便到什么地方,比如说我们在咱们的这个index.html中,咱们可以来写个超链接对吧,然后写个超链接来访问一下,呃,然后咱们这样,然后TH冒号,然后我们在这呢,咱们发送的请求啊,叫做test,然后斜线叫做responsibility。
01:23
行,然后这个咱们是测试,然后it response body,然后注解响应浏览器数据,大家看啊,好,然后呢,我们直接来处理这个请求就行,对吧?这个注解它是干什么的,它要放在哪来使用呢?大家看啊,然后咱们写个request mapping,然后咱们要处理的请求是它,然后呢,我们在这再写个方法,比如说我们在这来写个string,然后这个咱们就叫test response response body。OK。然后我们要干嘛呢?你看我们之前咱们如果在这直接来返回一个sus,大家应该都知道什么意思吧,我们现在咱们来重新部署,然后我们来点击这个超链接,大家应该都知道它直接是不是就会跳转到我们的so,这个逻辑视图所对应的页面就是搜点HTML对不对,下面咱们来一个刷新,然后我们来点击,大家看直接跳过来了,对吧?那我们当前咱们的这个注解,它是加在咱们的控制器方法上的it response body,大家看在这呢啊,然后这个注解的作用是干啥的?来咱们重新部署,大家直接看效果,就大家直接看效果就知道啊。
02:40
来我们现在咱们再来一个刷新,然后看我们来点击。啊,这是还没有重新部署完呢,啊好刷新,然后我们现在来点击大家看一样不一样。啊,大家看一下,一样不一样不一样吧,在这变成了success,如果说它要是跳转到我们当前的success.HTML页面了,那这里面应该显示的是success.HTML,又大又粗,因为咱们设置的是什么,设置的是标题,对不对?好,然后但是我们现在看到的只有一个success,那大家说这说明了什么?或者说我们也可以直接把咱们的network给打开,然后咱们来找到我们当前的请求,然后呢,你找到这个response,啊,大家看一下这个response里面显示的是什么,大家应该都知道吧,显示的是咱们当前服务器未浏览器响应回来的响应体的内容,对不对?所以说呢,你看这里面直接就是success,那大家都知道这个注解是干什么的吧?
03:39
对不对?Response body,这不就是响应体的意思吗?它可以干什么?将我们当前这个方法的返回值来作为响应报文的响应题,响应到浏览器。能听懂吧,它可以将我们当前咱们响应报我这个方法控制器方法所返回的返回值作为响应报文的响应,其响应到浏览器啊,所以说你看咱们不加这个注解,我们现在实现的是页面跳转,跳转到这个逻辑视图所对应的页面,而如果我加上之后,它是不是就相当于像浏览器响应了一个success这个字符串?
04:15
OK吧,那这个时候咱们还需要在这加http solve response类型的型参谋,不需要我们直接把我们要响应到浏览器的数据,然后来作为方法的返回值,然后加上这个a response body注解,那你方法的返回值是什么,那我们当前响应到浏览器的就是什么?能听懂吧,好啊,行,然后在这咱们把这个注解写一下,大家看好啊,这个注解以后用的非常的多,叫做it response body干什么的,然后将咱们控制器方法,将所标识的控制器所标识的。控制器方法的返回值,然后来作为什么,作为我们响应到浏览器的响应,来作为响应报文,响应报的响应题,响应题响应到浏览器,哎,响应到浏览器,哎,这个大家注意啊,好,那这个是那现在我们知道的这种方法,那大家说我们以后要响应浏览器数据呢,是不是就简单了对不对,好OK,那当然了,咱们重点来解决的不是这个问题,因为我们以后咱们想用到浏览器的数据一般都是一个Java对象。
05:32
OK吧,这个为什么啊,因为大家想一下,你看我们现在咱们是要做前后端,那我们现在咱们是要做咱们的浏览器端跟服务器端的这个交互,对不对,然后咱们做的是后台代码,然后呢,我们的前端人员呢,然后他做的应该是前端对不对,前端的内容,那所以说我们现在咱们来负责后台开发,然后他们负责前台开发,然后那如果我们每一次咱们响应到浏览器的数据都是五花八门,各种各样,比如说我这个请求响应回去一个字符串,我另外一个请求响应回去的是一个杰森,然后呢,我其他请求响应回去的是个true和false,对不对,那这个时候大家说对于咱们的前台跟后台的一个交互是不是就非常的麻烦,我们是不是每一次还需要去关注你响应回来的到底是什么,然后我才可以去处理这个数据,所以说呢,对吧,然后大家应该也都写过一些项目,对不对,大家都会发现我们响应浏览器数据的时候,咱们一般都要给它设置一个固定的类型。
06:32
比如说咱们里面会有一个什么叫做不玩类型,操作成功或失败,然后还有一个叫什么叫做message,是我们想用到浏览器的信息,还有一个是data,是我们响应到浏览器的数据,对不对?像这些,然后呢,咱们就可以把它创建为一个实体类,然后以这个实体类作为标准类型,然后来响应到浏览器数据。OK吧,所以说我们一般想用到浏览器的,它都是一个什么呀,都是一个Java对象。
07:01
OK吧,行,那这个时候呢,大家想一下,那我们该怎么去做呢?大家注意,我们直接通过it response body注解就可以实现,也就是说那我们现在咱们把一个Java对象响应到浏览器的时候,我们要干什么?大家之前应该都学过吧,你能直接把一个Java对象响应到浏览器吗?不行,对吧,你怎么能够响应回去,你响应回去的,如果你用response.get right.right括号里面啊,Right不行,咱们得用print,你括号里面直接去写个URUR对象,我问大家你想要回去的是什么?如果大家不知道,大家可以听一下啊,你响应回去的是个内存地址,知道吧,就是它to string之后的结果。知道吧,好OK,那所以说我们之前咱们是怎么解决的这个问题啊,大家想一下对吧,你的Java对象,你哪怕真的能响应到浏览器,你觉得你的。Javascript它能处理咱们的。Java对象吗?他认识Java对象吗?他不认识,所以我们之前咱们还是通过杰森或者说是杰克森,然后咱们处理杰森的这些第三方架包,先将咱们的Java对象给转换成我们当前的一个杰森字符串,然后再把它响应到浏览器,响应到咱们的阿贾克斯中,对不对?大家想想是不是这样的一个过程,那所以我们现在咱们要做的事情也是这样啊,对不对?然后比如说我现在我要把一个user对象响应到浏览器,你能直接响应,不能,不能,我们只能把它先转换为Jason字符串,再响应到浏览器。
08:34
OK吧,那我们在spring VC里面该如何解决这个问题呢?大家看啊,非常简单,在这儿呢,给大家写一下,好,然后咱们的第四个问题就是来使用咱们的it response body注解,对吧,然后来响应浏览器,然后Jason格式的数据格式的数据数据OK,然后这个时候它的步骤大家看啊。然后跟他一样。
09:00
啊,在这大家看好它的步骤啊,然后跟我们上面这个是一样的,它也是有三个步骤,而且前两个步骤跟我们当前咱们的这个request body来处理接送格式的请求参数大家注意是一样的,都需要导入杰的依赖,都需要在spring VC的配置文件中来设置MVC的注解驱动,然后它的第三步大家看干什么,然后将咱们需要转换为什么Jason字符串的Java对象直接作为什么控制器方法的返回值。OK吧,然后呢,再使用谁使用咱们的it response body注解,然后来标识咱们的控制器方法。OK吧,然后就可以将咱们的加va对象直接转换,为什么叫做杰森字符串,然后并响应到浏览器,好,大家看啊,非常的方便,非常的简单,好然后所以咱们就可以来测试一下呀,比如说我们在这咱们找到咱们的首页,大家看咱们前两个咱们都已经做过了,因为咱们之前测试request body的时候,大家看你看前两个步骤是一样的,对不对,所以说咱们这两个已经完成了,那下面呢,咱们就来看一下该具体的具体该如何去操作啊,好,然后我在这呢,咱们再来写一个这个按钮啊,在这给它换一个行,然后这个咱们是使用谁啊,叫做it response body body body注解对吧?然后响应浏览器响应响应Jason格式的数据,其。
10:52
Test格式的数据行啊,好,这个咱们是来test response body。
11:01
好,然后下面咱们把这个方法来写一下,大家看直接在这来写就可以,好括号,然后我们要发送的阿贾克斯请求,你想复制就复制一下,不想复制的话也可以,然后点post或者说点get也行,比如说我们在这咱们只测试咱们响应回来一个Jason格式的数据,OK吧,行,所以说咱们只需要来设这个发送一个,设置一个请求路径就行啊好,然后咱们的上下文路径叫spring VC,然后咱们是test请求路径叫test,然后response body,然后斜线Jason。OK,然后在这是hen.z然后我们来设置一个箭头函数,对吧,然后也是一样的这个处理方式,直接把咱们响应回来的结果呢,给它输出能看懂吧,输出到咱们当前浏览器的控制台,OK吧,行好,那我们在这咱们就可以来处理这个请求了,然后来找到我们的控制器方法。
12:03
对吧,然后在这,然后我们需要干什么,先设置request mapping request mapping,这是我们要来处理的请求,然后public,比如说我现在我要做什么啊,大家注意,我要来响应到浏览器,一个Java对象,一个user对象,那大家都知道这个user对象,那咱们要响应回去,你是不是得先转换为杰森,转换为杰森字符串之后再响应到浏览器,那如果我们现在如果我们要用spring VC来处理的话,怎么处理,直接把这个优点作为方法的返回值。OK吧,然后在这大家看好,咱们就叫做test response body哦,上面这个方法也是叫这个是吧,行,那咱们就不管了啊,然后哦,不行,然后这两个方法,它这个方法是重载的话,得看参数,跟返回值没有关系,对吧,那咱们这样吧,然后再加上一个杰森吧,行吧,好,然后呢,我们怎么做,咱们先来创建一个user对象,然后等于六一个user,然后大家看它的ID1001,用户名or me,然后密码123456,然后年龄20,然后再往下是性别,来给他设置一个男,OK。
13:21
好,那咱们就设置完了,设置完之后直接返回,大家注意没有别的,没有别的操作步骤,直接在这把这个U的对象返回,但是呢,咱们说了第三个步骤,你不但要把方法,你不但要把咱们当前要响应到浏览器的数据作为方法的返回值,是不是还得再加上一个it response body OK,啊,行,那咱们就直接来进行测试呗,大家注意非常的方便,也就是说我们在这省了一个什么过程,我们自己手动把咱们的Java对象,然后使用咱们的第三方类库,第三方价包转换成杰森字符串的过程,然后我们直接来使用spring VC为我们所提供的这个注解,然后按照VC要求的方式就可以啊好,那我们现在咱们把咱们的浏览器打开,然后刷新,大家看咱们把谁给咱们来找到咱们的浏览器的控制台啊,现在来点击。
14:15
大家看一看有没有了,看ID1001用户名二大密密码123456A20金德男,你看这不就是一个结森对象吗?是不是?是吧,因为咱们之前咱们在学习杰森的时候,大家应该都知道,对吧?然后我们当前的杰森分为两种格式,一种是杰森对象,一种是杰森数组,然后杰森对象是不是跟咱们的实体类对象和咱们的map集合是不是长得都挺像,对不对,对吧?好,这个大家要注意啊,好,然后所以说如果我们现在要把一个实体类对象,然后转换为咱们的Jason响应到浏览器,那你响应回来之后,它就是一个Jason对象,因为它的格式是一样的啊,当然这个大家不知道也没关系,对吧?就是我要说一个什么问题呢?就是咱们的常见或者说叫做常用的Java对象,然后转换为杰森字符串的结果,转换为杰森的结果,对吧?咱们的实体类然后转换,为什么大家说叫做杰森对象,咱们的map集合转为什么也是杰森,也是咱们的杰森对象?
15:25
然后我们的list集合,然后转换,为什么叫做杰森数组播,我说的是这个意思,当然了,大家如果不知道也没关系,对不对?你直接通过咱们的conso.log把它输出,你看一下,你看到他长什么样,这不就知道它到底是对象还是数组了吗?对不对,对象是大括号包括的,数组是方括号包括的,对不对,你对象咱们就对象点见货去值你数组,那你就循环不就完事了对不对?所以说这个无所谓,你写熟练了之后,大家应该就都知道了,知道吧,就咱们常用的Java对象转换为杰森的结果啊。
16:03
好,那下面呢,咱们再来测试一下呗,咱们在这是不是应该是干什么。然后在这个地方,咱们想要回去的是一个优点对象,那我们就把咱们刚才说的这个问题验证一下,对吧?咱们想要回去一个map几何,咱们再想要回去一个list的集合,咱们看它长什么样啊,响应回去的到底是什么样的一个结果,来把这个注释掉,然后咱们把它复制一下,然后放在这个位置,比如说我们在这响应回去一个map集合,它的键是string,然后它的值是A波。行,然后呢,这是我们创建的第一个用户,这是第二个,这是第三个,OK吧,然后我们把它给放到咱们的一个map集合中,见是。String值是object,然后map等于六一个。Map行100110021003。
17:00
Order的ME1 order的ME2 order的IN3,然后来往咱们的map集合里面去放,然后呢,以谁为建,大家注意以用户的ID为鉴,然后以我们当前的用户对象为止复制,这是1002,这是1003,这是user点一,这是user点二,User点三,然后最后把谁返回,把map集合返回来,大家看啊,然后我们现在咱们响应到浏览器的数据,它到底长的是什么样,对不对,大家应该能想到吧。对不对,就是一个杰森对象嘛,对不对,然后杰森对象里面,然后见是咱们用户的ID值,是我们当前这个用户对象所转换成的Jason对象,OK吧,啊,当然呢,这个还是那句话,跟大家说那句话啊,如果说你要真不知道无所谓,然后我们直接呢,把这个内容呢,你通过cons.log输出到浏览器的控制台,你看看它长什么样就行,对不对,好,然后咱们来看一下啊,大家看这是不是就是一个接层对象啊,对吧,然后这是键后边这是纸,前边是键,后边是纸,前边是键,后边是值,OK吧,行来咱们最后一个大家看,把这个呢,咱们给它先复制一下,然后给它放到这。
18:13
然后呢,我们把这疙瘩,然后咱们给它注释掉。OK,然后呢,我们现在呢,咱们再来看,然后呢,咱们现在需要来返回的是一个什么,比如说我要响应到浏览器一个list的集合里面来放的是谁,就是user OK吧,那这个咱们怎么写啊?现在咱们直接通过a risk.as list,然后快速的去构建一个集合,USER1 user2,然后USER3,然后就可以来获取一个list集合了,然后咱们在这直接把list给返回。那这个时候大家能想到它长什么样吗?这个时候他响应到浏览器的就是一个杰森数组,知道吧,方括号里面来放了三个数据,每一个数据都是我们的每一个用户对象,知道吧,来,现在咱们再来一个重新部署。
19:05
好,然后我们在这,咱们来一个刷新刷新。大家看啊,然后我们现在来点击大家看一下,你看这有一个长度是三,然后咱们一个方括号里面三个大括号,对不对,然后这是咱们的第一个数据,这是第二个,这是第三个,没问题吧,行啊,好,那这就是我们通过咱们的it response body注解,然后呢,来这个响应浏览器一个阶层数据啊,当然呢,咱们也可以来响应回去一个普通的字符串,就像是我们第一次来给大家写的这样的一个效果一样,对不对,但是呢,我也跟大家说了,以后我们响应到浏览器的这个数据,一般咱们都是有统一的格式的,知道吧,咱们都是要把这些数据封装到我们当前格式统一的一个对象中的,对吧?就像咱们刚才说的,里面要有操作成功或失败的,这个不玩类型的属性,要有咱们当前这个响应到浏览器的一个信息,对吧,然后还有一个咱们响应到浏览器的数据,OK吧,这样的啊,所以说呢,咱们一定要知道我SPAVC里面我该如何响应到浏览器。
20:10
一个阶层格式的数据啊,那咱们直接通过response body就可以,当然咱们也同时呢,一定要满足两个,一定要有这三个步骤,一定要导入Jackson的依赖,一定要去配置咱们的开启MVC的注解驱动,下面咱们才可以按照这种写法去响应浏览器一个杰森格式的数据,OK吧,好啊。
我来说两句