00:00
好,那我们刚才咱们讲的这两个注解,大家要知道它分别都是什么功能啊,大家也要知道我们之前咱们为什么要用它,对吧?因为如果你要不用的话,那我们如果用原生的SOAPI来获取请求头信息和获和咱们来获取咱们的cookie数据是非常麻烦的,就比如说呀,获取请求头我们是不是可以通过咱们的request,然后点叫做get header,哎,然后来在这里面来写一个请求头的键,然后来获取请求头的值对不对?所以这个大家一定要看好啊,比较麻烦,但是如果咱们直接用这个注解的话,就可以直接将咱们的某个请求头和咱们的行参进行绑定好,当然这个cookie value呢,也是帮助我们来获取cookie数据的,对吧?然后呢,如果咱们要不用这个注解的话,那咱们怎么获取,我们应该是request点,然后呢,Get cookies,先来获取咱们所有的cookie对象,然后获取完之后呢,咱们是不是就需要来进行这个。
01:00
和方法的返回值是个数组,咱们得遍历,遍历完之后我们是不是才可以来获取我们当前cookie cookie所对应的这个值,也就是cookie数据啊,好,但是我们现在有了这个注解之后,我们是不是就可以直接把咱们当前的某个cookie跟咱们当前的行三进行绑定就完事了啊OK,然后那我们下面呢,咱们再回到咱们获取请求参数的问题上,对吧?然后想必大家呢,应该也能想到一个问题啊,就比如说如果我现在,然后我从浏览器向服务器传输的数据呢,非常的多,对吧?比如说我们传输的有用户名,有密码,有年龄,有爱好,有性别,有生日,对吧?然后有邮箱地址对不对,然后有收获地址对吧?你像有这么多的信息,那我们如果每一个请求参数,咱们都在控制器方法的行参里面,控制器方法的行参位置来设置一个相对应的行参,那大家说这个时候是不是也挺多的呀,是不是也挺麻烦的,对吧?所以说spring mvc就为我们。
02:00
提供了一种更简单的方法,什么方法呢?大家注意,然后我们只需要在控制器方法的行参位置来设置一个实体类类型的行参,然后只要来保证咱们实体类中的属性跟我们的请求参数的名字一样,那我们就可以直接把我们当前的请求参数的值封装到咱们的实体类类型的形参中。这个大家能听懂吧,好,咱们直接来写一个例子,大家就能看懂了啊,非常的方便,然后在这大家看好,那咱们用了框架之后,那肯定是越用越简单的是不是啊,比如说我在这来设置一个什么叫做U这样的一个类,然后这里面咱们来设置几个属性,比如说inte类型的ID。好,然后string类型的username,然后再往下,然后是一个string类型的password型,就这三个啊,好,然后我们来设置它的有参构造,咱们再来设置它的无参构造,还是那一句话啊,记好,然后你可以设置它的有参构造,但是你必须要把无参构造给设置出来,所以说你要么。
03:09
你就不设置,你要设置,你就要把有参跟无参都设置出来啊好,下面咱们来重写to string,然后下面呢,我们再来把它的get跟set方法,然后来生成出来啊好,那我们现在咱们怎么办啊,比如说然后我们在这呢,也是我们当前咱们所发送的请求,咱们就叫做per pogo,根据我们当前的一个pogo实体类,然后来获取我们的请求参数,OK吧,好,那我们就可以在这个位置来创建一个request mapping request request mapping。好,然后他要来处理的这个请求叫做per,斜线叫po OK,然后public返回string,好,然后咱们的这个叫做get param get per,然后by pogo行啊啊,然后呢,我们怎么写,大家注意啊,咱们在这呢,直接然后来返回success,咱们最终还是跳转到咱们的成功页面,好然后这个地方我们就可以通过咱们的一个实体类对象,大家注意啊,叫做user,对吧,然后来获取我们当前的请求参数了,你只要来保证咱们的user里面的这一个什么,这个属性名,最好是属性名,我说的是属性,不是成员变量的名字啊,你只要来保证这里面的属性名,也就是跟咱们的get跟S有关的,对吧,然后呢,跟我们传输过来的请求参数的名字一致就行,对吧,那我们在这这是不是叫username,咱们给它改成小写的啊好,然后呢,我们现在呢,咱们是不是就可以在我们的这个。
04:45
的方法中,把咱们所获取的U,然后给它输出,大家注意不需要加任何的注解,知道吧,咱们只需要在这儿呢设置一个实体的类型的行参就可以啊,好,但是前提大家要知道你的属性名一定要跟咱们的请求参数的名字保持一致,好,下面我们在这咱们再来一个重新部署,咱们来进行一个测试啊。
05:12
好,然后我们来访问首页。然后大家注意这是orderin,然后这是123456,然后来点击登录,大家看啊,来看一下我们当前咱们所输出的这个user信息,大家看username等于order me对吧?然后password等于123456,没问题吧,好啊,所以说这个答案一定要看好,这也是我们以后用的非常多的方式,对吧?因为我们以后咱们从浏览器传输过来的数据可能有很多,如果有一个两个,那我们是不是就可以直接通过相对应的行参获取,但是如果咱们传输过来的数据比较多,那我们是不是就可以有相对应的实体类,那咱们就可以直接通过这个实体类类型的行参来进行获取啊。好。来咱们的第六个问题。
06:01
好,然后通过什么呀,实体类类型通过控制器,控制器方法。的实体类类型的行参,然后来获取请求参数对吧?好在这大家注意,然后咱们需要在什么地方需要啊,需要然后在控制器方法的行参位置,然后来设置实体类类型的型参,好然后咱们要保证谁呀?要保证啊,要保证咱们的实体类中的属性的属性名,然后和咱们的请求参数的名字然后一致啊,这个大家注意,和咱们请求参数的名字一致,然后咱们就可以通过咱们的实体类类型的形参,对吧?然后来获取咱们的请求参数,好,这个大家要看好啊。
07:01
行,那这也是我们以后最常用的方式,这个大家注意好,那我们现在呢,然后咱们的这个啊,如何获取咱们的请求参数呢,这几种情况呢,咱们就已经说完了,好,然后下面呢,那我们再来解决一个咱们比较重要的一个问题啊,就是什么叫做获取请求参数的时候的一个乱码问题,那这个问题其实我们之前咱们在solve的时候,咱们也见过,咱们也遇到过。是不是对吧?好,然后所以呢,这个请求参数的这个乱码问题,我们应该怎么来解决呢?我们之前在solve的时候,我们怎么解决呢?我们是不是需要干什么,咱们是不是需要,哎,把我们这个通过request set char recordcoding方法,然后来设置咱们当前的请求参数,获取请求参数的一个编码,对吧,其实也就是咱们当前的一个请求报文的编码,对不对?好但是大家想我们在spring VC里面,你有没有这个request对象啊。
08:00
没有对吧,你没有这个request对象,那你怎么来设置请求,请咱们当前的这个编码问题呢?对吧,有程老师,那我现在不是可以在控制器方法里面来获取咱们solve的API吗?那我在这儿来设置它的请求,来设置咱们的编码行不行不行啊。为啥呀,大家想想啊,因为我们当前你在这所获取的request对吧,然后他一定是获取了我们当前的请求参数之后的一个request。对吧,因为我们哪怕你不在这写这个http solve request类型的行参,那我问大家你能不能获取请求参数,你看咱们在这儿,你能不能获取这username和password可不可以是可以的呀。对不对,对吧,所以说那他在dispatch solve里面一定是将咱们的请求参数已经获取过了,然后我们在这才可以在行参的位置就获取,那所以如果哪怕你在这你能获取request,那你在这再设置它的编码有用吗?没有任何作用,因为咱们的请求参数已经获取过了,对吧?那有同老师,我可不可以这样,我可不可以在这来设置完编码之后,我通过我的solid API来获取请求参数行不行,大家注意不行,为啥?那是因为啊,我们当前咱们的设置编码的这个代码呀,它有一个要求,在我们设置编码之前,你一定不能获取任意的请求参数,你只要获取你设置的编码就没有任何功能。
09:30
不知道,大家这个知道不知道啊,大家听好了,如果你不知道,那大家就注意一下,就是说我们设置编码的这一句话,你在他之前,在他执行之前,你不能获取任何的请求参数,如果你获取了,那你设置的编码它就没有任何作用了,知道吧,好啊行,那下面呢,咱们就来看一下咱们的这个乱码的问题,然后咱们就把这个乱码的问题来解决一下啊。
我来说两句