00:00
下面呢,我们就来看一下我们如何来使用这个http message converter,用它干什么呀?诶,用它把请求信息转化为我们需要类型的对象,传入到目标方法的入参或者是。把目标方法的返回值转为我们想返回客户的这个类型,返回给客户对吧。VC提供了两种方式,第一种方式两个注解,具体是request body跟body,那request body呢,是用来修饰那个目标方法那个入参的啊。Response body前面用过了,用来修饰那个方法的,对吧?第二种途径,使用httpttp entity,或者是response entity http entity请求,这个可以作为目标方法的入参。Enity可以作为目标方法的返回值,那么问题来了,我即便是用了这两种方式的任何一种的话,它如何来选用?使用哪一个htp magic convert呢?我们来看这个图。
01:15
看这个图实际上根据的就是那个类型,就是那个泛型T,看到了吧,这个泛型T来我们以这个注解为例,哎,比方说我这个目标方法呀,这个入参使用了response包来修饰,然后这个参数呢,是一个string类型。看到了吧,它就会把请求信息转化为为一个string类型的字符串,传入到目标方法用哪个作为转换的那个HTTP就用这个HTTP。好的,那同样,如果你这个返回值是一个bit类型,而且返回这个目标方法呢,还用了这个response包进行修饰的话,那它就会找到be rain htp message convert,把我们返回的这个BAT数组。
02:09
返回给客户端,体现的结果应该是一个下载的效果。我们具体来用一下,看看效果。在index页面我们来搞一个。搞一个表单,Form action test http com water method post。Encoding type multi part form data,我要搞一个文件上传的效果,Input type file name file d描述input type。
03:01
Text对吧,Name d。Input。Summit value summit洗完。写一个目标方法。Public string return,大家注意,有这个返回值,哈哈,加一个new date。大家注意这个返回值,这个返回值呢,这样写的话,这很显然我没有一个页面跟它是对应的,对吧?看着request mapping先写上好的,我加上一个response。这个时候呢,它就会直接把这个返回值这个字符串传给客户端是吧,他就会来找谁呀,他就会来找这个string htp message convert,然后呢,把这个转为一个什么来着,看这个图。
04:16
转为一个http output。Message,然后给到客户端输出流给出来,好了,我们这块我们再用一个来request。Body,看string形的body,打印一下body。OK,写完我在桌面上呢,我有这样的一个TXT文档,我们先看一下。就是这样的一个文档,这个文档呢,实际上是什么呀?实际上就是一个JSP,然后把这扩展名改了一下。走起看看效果刷新。Fell。ABC.txt。
05:00
Abcd,走。我们看到。这个响应结果呢,真的就是那个字符串看到了吧,他直接把这个字符串。写到了客户端,那请求信息呢,也打印了这个信息,就是我们就是我们请求信息啊,这个file是一个ABC.tst信息打出来后边的话呢,还有一个呃,DC这样的一个abcd,诶我们在做这个文件上传的时候,就在Java web的时候用那个comments fill upload组件,我们曾经做过这样的一个实验,还记得吧。好的,这个呢,就是我们用的这个注解。注解request body或者response body,这样一用呢,我们就对这两个注解,还有这个HT message convert有了一个更感性的认识。下边呢,我们再来用一下这个http entity或者response entity吧,我们以这个response entity为例吧。
06:07
可以吧,这里边的话呢,我们需要说一下这个response response body,还有request body response body,或者是http entity respond entity,他们可以单独出现,而不一定需要成对出现。好吧,我们来用个它。CTRLC看看。用这个呢,我们可以做出一个文件下载的效果。文件下载文件下载返回支持他吧,Response。呦,Response entity。好,Be类型response entity,先return个now request mapping。
07:08
CTRLCCRV,好的,我希望返回的呢,就是一个response。Entity。BAT数组类型。Response等于new response entity,好的,我们来用它。用这个构造器好吧。返回response这里边呢,诶我们需要一些这个参数,第一个是个body类型。Body等于now,我们直接让这个body关联到一个文件。我在这个web content下边搞了一个file,这个file下边有一个ABC.txt看到了吧,于是我我需要来读这个文件所对应的输入流,怎么搞啊,我传入个session进来吧。
08:09
Http session为什么需要他呀?因为我需要contest。我需要它错了,Context等于session.get我们搞一个输入流input in等于点get result。Files目录下的ABC.txt。然后呢,Body等于new in点。
09:00
再来印点read都给它读到这个包子里边去,一个搞定。第二个呢,是实际上就是HTTP。等于new http。点。Ad。显像头的名字跟显像头的值,这个值呢叫content。下载attach问号。分号file name等于ABC.txt可以吧?最后一个是status。Status http status http status status code等于http status.ok好,写完。
10:00
有一场往外抛,不管哈。不管我们注意我们返回的是这个response body,因为我返回的是一个对象,所以说在这个里边呢,我们可以设置更多信息,比方说设置响应头,哎,还可以设置这个响应码是吧。看一下效果。重新启动。我们用这个Chrome吧,刷新哦,我这个超链接还没加呢,CTRLC。过来,边边。A craft。保存。刷新点一下大家看有一个文件进行下载了吧,打开诶这个就是那个文件的内容,因为我先前下载了一次,所以说这块的话呢,它说是eabc1.tsta里边下载,大家看刷新走诶文件进行保存,那这个文件呢。
11:11
我下载到哪了,打开了,刚才已经是吧,看到了下载文件的这个情况,好以上呢,就是我们用这个http message convert的这个基本方式,嗯,具体用到了这个注解,或者是htp entity,或者response entity,哦,这个没用是吧,使用方式跟这个是相类似的,大家可以自己去。研究一下。
我来说两句