00:00
好,前面呢,我们说了一下参数解解析器,我们说spring mvc呢,除了给我们参数位置来标一些简单的注解,用参数解析技能解析外,我们方法位置呢,也允许我们传入一些solid select API来作为参数,比如我们之前呢,就写过一个方法,我们的这个request controller里边有一个沟通方法,传入了原生的request对象,好,我们给他打个断点,我们来看一下我们这个request对象是用哪个参数解析器来进行处理的,能以debug方式来进行运行。我们发送goto请求来做一个测试。你看它的这个参数值是如何确定。好,来发送goto请求走,然后呢,请求来到我们的disps of let,我直接放行,放行到我们这个执行目标方法的时候呢,要执行我们这个in work for request,获取我们这个参数值,我们来step into进来,然后呢,拿到我们这个所有参数,那现在参数呢,只有一个,哎,它这呢有一个没问题,然后呢,我们接下来继续往下看,我来直接放行,用了一个跟它一样大的小的数组啊,拿到我们的第一个参数啊,然后呢,我们来继续往下走,现在接下来看ers support,我们的这个P,我们接下来呢,它就要看我们的这些解析器能不能解析我的这个类型的参数,那我的这个类型的参数呢,大家明显能看到这个参数呢,是一个htp so request。
01:25
然后我们来看它能不能解析们来,Step into进来,我们看它是怎么判断的,Step into我们这呢,所有的参数解析器我们来挨个变历,我呢就把这个断点打到这,我来看便利的第一个走,第一个呢是叫request power method的argument我们来它肯定不行,我们就直接放行,Request map它也不行,我再来放行,然后呢,换成pass variableable也不行,放行,然后passable map也不行放行,Matrix也不行,Matrix map也不行。还有接下来有一个model attribute,这个咱也没见过,Step into进来看一下,其实非常简单,就看你参数有没有标注model attribute的这个注解,那我们没标,所以呢也不行,然后我们继续来放行。
02:12
再下一步叫request response body,它相当于来判断我们是不是标注了request body,诶以前也用过它,那我们也没标,放行,然后呢,继续来再放行,这这个是request part,这是文件上传的,我们不管request header也不行,Request header map也不行,Solid cookie也不行,还有expression value这个表达式的这个值,我来step透径来看一下啊,它呢相当于是来看你有没有标这个value注解,比如说我们有些参数啊,直接at value来指定一个,我们可以写spring的表达式,我们来可以动态获取一些值,但是我们也没标,所以呢也不支持我来放行。接下来呢,Session attribute跟我们这个也没关系,然后呢,Request attribute method step into进来是来看我们有没有标request method attribute注解,那么这个goto方法没标,它的下一个方法虽然标了,但是我们是develop goto的没标,所以呢,我继续放行,接下来有一个。
03:13
这叫solid request method,相当于我们来有把这个呢step into进来看一下,诶它在这拿到参数的类型,我们参数的类型呢是htp request,将来你看它的一大堆判断,看你是不是web request或者so request,那我们的http so request就是soet request,就说你是这些类型的任意一种我都支持,那行了,那我们现在确实是它,然后呢,我们进入到这个货逻辑了,成功了,然后呢,我们接下来直接给它返回,那我们这个解析器就支持叫so request method argument reserve,然后它怎么解析的,那先把解析器呢,最终缓存起来,然后我们来调用下边的方法,看怎么解析step into,然后呢,拿到这个解析器调用解析来看它怎么把原生的request传过来,大家注意我们这呢有一个web request,这个web request呢,相当于把我们的request response,原生的这两个东西呢,全部组合放到了这个对象里边,然后呢,接下来解析。
04:13
参数的时候,Step into,我们现在呢,想要拿到,大家看我们现在想要拿到原生的request的对象来,他呢就在这判断我们这个对象类型是不是web request,那我们不是,而我们呢是select request,那对了,我们就是这个类型,然后呢,他接下来给我们解析step into,它把we web request传进来,Step into来说简单的那就是web request把我们里边的这个原生的request请求拿到,哎,拿到我们原生的这个request请求,然后把原生的这个request请求往回一返就行了,就这么简单,所以呢,这其实每一个参数我们最终呢,都会落脚到我们这个reserver来进行解析,而我们这些SOAPI,那最终呢,就是我们的这个receiver,呃,我们来看一下我们刚才的这个reserver叫什么来着。
05:03
嗯。把这20几个reserve,我们有一个叫so request method的,这个叫serve。Request。Request method这个argument,所以呢,它能支持的类型在这control home。所以呢,这些东西可不是老师一个一个呢试出来的,比如说呢,我们这个它可以来解析以上的以上的部分参数,当然其他的一些参数呢,大家自己来找相应的这个解析器就行了,因为它里边呢,声明的整个support,它支持的是这样子的,所以呢,这就是我们看到了参数解析器在咱们这个spring mvc里边的妙用,那我们下一节课呢,再来说我们这些复杂的参数,其实复杂的参数我们会传一些model model tribute这些东西它是怎么解析的,那自然而然我们肯定会有相应的这个策略。
我来说两句