00:00
好,那下面呢,我们就来看一下咱们的SPVC中,我们所提供的获取请求参数的方式。非常的简单。大家只需要呢,在控制器方法的行参位置还是行参位置啊,然后来设置两个行参,哎,然后保证咱们当前的行参的名字跟我们的请求参数的名字保持一致就行。什么意思,比如说啊,大家注意。然后呢,大家可以直接把这个路径给改一下就行,OK吧,比如说我们现在咱们就叫A,就叫斜线per吧,因为咱们这个通过这个行参来获取咱们的请求参数,这行参也叫per对不对,所以说呢,我们在这就叫per啊好,下面大家看好,咱们在这来设置一个request mapping,然后呢,它的处理的请求的请求地址就叫para,然后下面public,然后大家看好string,然后咱们这个叫做get para get para就行啊啊然后怎么做很简单,只要在控制器方法的行参位置来设置两个行参,来保证咱们的行参的名字,然后跟我们当前咱们的请求参数的名字一致就行啊,所以说看好啊,不用加任何注解string,然后username,你看我们传输过来的请求参数的名字不就叫做username和password吗?这个大家应该都知道吧,表单提交的时候,提交的方式是什么是?
01:27
Name等于value,也就是这个表单项的内属性值等于它的value,属性值是这样去拼接的,所以说我们只需要在咱们的行参位置来设置一个什么跟请求参数的名字一样的这个行参就可以啊,好逗号,然后在这咱们再来写个string,然后password就可以。好,下面呢,我们把它给输出,然后大家看一下啊,然后我们现在咱们再来一个重新部署。好,咱们就可以直接来获取到,然后我们现在咱们把这些东西给它清空掉,然后我们在这咱们先访问首页,然后这是呃me,然后密码123456,然后来点击登录大家看啊。
02:11
来看这获取到了没有,或者说咱们换一个值吧,比如说这个咱们写个RO去root,然后这咱们写个123点击登录,来大家往下看获取到了没有,获取到了非常简单,大家注意,这是我们当前咱们获取请求参数的第二种方式,对吧?是通过咱们的控制器方法的形参,然后来获取请求参数对不对?好,然后大家注意啊获取然后呢,怎么写,咱们只需要只需要然后再控制器方法的行参位置对吧?然后来设置什么,来设置这个啊,来设置这个,来设置一个行参,来设置一个行参对吧?然后这个行参的名字,行参的名字,然后要和谁呀,要和咱们请求参数的名字一致,然后即可即可,OK啊行,这个大家注意,只需要在。
03:11
控制器方法的行参位置来设置一个行参,这个行参的名字和请求参数的名字一样就行啊好,那所以说呢,大家注意,那如果我们在咱们的一个控制器方法的行参里面,你来设置了一个,比如说字符串类型的或in t类型的一个参数,那它默认它获取的就是咱们当前浏览器传输过来的请求参数,OK吧,相对应的请求参数啊,行OK,好,那但是咱们也有一些特殊情况,比如说大家想一下,那如果我当前的请求参数的名字跟咱们的行参的名字它不一样怎么办?对吧,其实大家注意这是一种特殊情况,那你把它设置为一样的不就行吗?对不对,所以说大家注意,那你看比如说我们现在咱们的这个username,咱们就给它设置为name,哎,大家注意啊,或者说咱们给它写成是一个大写的叫做username。
04:04
能看懂吧,好,这个时候我们还能获取到吗?大家注意啊,大家想一下,他俩都没啥关系,他怎么就能够获取到呢?其实我们当前咱们的这种方式,你之所以在这儿能够获取咱们当前的请求参数,大家说你说它是干什么了,他不就是来获取了我们当前参数的参数名,把咱们的参数的参数名作为请求参数的名字,来获取相对应的请求参数值,对吧,然后再赋值给这个参数,这不就完事了吗?大家说是不是对吧?所以说它俩一定要一致,不一致的话,咱们肯定是获取不了的,来下面咱们刷新,然后这个咱们是。这个RO root,然后123点击登录大家看啊来咱们往下找来拉到最后。大家看,你看你的username获取到了没有,没有获取到,为啥呀?因为咱们把它给设置出来,它获取的就是请求参数,名为username的这个请求参数,那你现在他们两个名字不一样,它能获取到不获取不到啊,那不就相当于咱们的浏览器没有传输这个请求参数,而我们在这儿却获取了,那你获取的不就是难吗?
05:14
咱们之前在讲my be的动态circle的时候,跟大家说过这个问题,浏览器传输过来的数据对吧?在在咱们这个各种情况下,你在服务器中获取的是什么?比如说你没有传,但是我们在服务器中却获取了,你获取的就是慢,比如说我们的文本框里面,咱们什么都没有,这个什么值咱们都没有输入,然后点击提交,你在服务器获取的就是空字符串。对吧,如果是单选框或复选框,你没有做任何的选择,你在服务器中获取了,那咱们获取的也是难。有印象吧,好,这个大家注意啊,好,那这个问题咱们该如何解决,大家注意,那也就是说我们的这个浏览器传输过来的请求参数的名字跟咱们控制器方法的这个行参的名字不一致的时候,也就是说我们要手动来创建它们两个的对应关系,这个时候怎么办?大家看好啊,咱们在这有一个注解,又是一个注解啊,叫做request。
06:13
叫做a request per叫做请求参数,专门用来设置谁的咱们的请求参数和咱们的控制器方法的行参的映射关系的。OK吧,然后大家看一下这里面呢,咱们一共有几个属性,一共有三个属性,第一个叫做value。第二个,然后叫做name,它俩是一样的,你看它的别名是name,它的别名是value,对不对,一样的啊,好,再往下在这有个required,什么意思,叫做必须,然后再往下在这有个default value什么意思?Default value指的就是默认值的意思。OK吧,那咱们看来看一下这个注解该怎么用啊,首先它的Y流属性。干嘛的来设置我们当前跟当前的行参来绑定的请求参数的名字。
07:02
我再说一遍啊,跟当前咱们的行参来进行绑定的请求参数的名字,换句话来说就是来指定一个请求参数的名字,跟当前的行参进行绑定。咱们的请求参数的名字叫什么?叫做username,大写的N。是不是好下面啊,咱们在这来换个行。来,大家注意啊。好,那我们现在咱们再来一个重新部署,大家看这个时候它就可以获取到了,所以说这个注解大家看好,咱们其实也是在一些特殊情况下咱们才会用到的,知道吧,好啊,然后我们现在咱们再来一个刷新,然后这是root啊,这是123点击登录,大家看一下来,你看获取到了没有,是不是就获取到了呀。是不是啊,哎,行啊好,那这里面还有一些其他属性,咱们把这三个属性都说一下,首先咱们现在用的是value对吧,然后它还可以value就相当于谁,相当于这里面的name,咱们刚才看过了啊,那它还有一个什么属性呢?叫做repair。
08:05
默认值位处表示什么?表示我们当前咱们的这个Y流属性值所对应的请求参数必须进行必须传输,如果你在当前的请求中,你没有去传输我们的Y流所对应的请求参数。大家注意直接报错知道吧,这个东西咱们不需要设置默认值就是啥呀,来大家看一下啊require,它默认值就是出,那咱们可以把它写出来,大家看我现在呢,我在这儿,我再来重新部署。好,这个例子咱们好像还做不了,对不对,因为我们现在咱们的这个请求参数大家看一下啊,然后呢,咱们是通过表单提交的,那这个肯定会传,那咱们就这样呗,咱们的请求路径咱们在地址栏里面自己拼一下啊,是per,然后问号咱们把谁传过去,把password给传过去,123,咱们有没有传输这个用户名叫做username的,没有一个回车,大家看直接就是400。
09:08
什么意思?他说我们必须的一个请求参数,字符串类型的请求参数,Username is not present present,什么意思叫做存在的意思。对吧,叫做不存在,能看懂吧,好,这个大家注意啊,来咱们把它复制过来,先放到上面咱们的笔记里面,一会咱们再去写好,然后下面呢,那我们的这个时候大家注意repair来表示的就是是否必须传输value流所对应的请求参数,如果不传直接报错,那如果咱们设置为false的话,你就传就传,不传就不传呗,你传了,那我们当前咱们就会把这个值赋值给这个参数,行参,如果你要不传的话,那没关系,那不传到它们的值不就是默认值吗?来大家注意,来重新部署,咱们再来测试啊。
10:00
好。然后我们现在咱们也是来刷新对吧,然后咱们的这个路径是PM per,然后问号叫做password,然后等于1231个回车。大家看有问题吗?没有问题。好,这user name大家看一下,那我们现在没有船。因为它不是必须要传输的请求参数,那所以说不传的话,那咱们的这个行参就是null OK吧,行来下面呢,我们再来看第三个这个参数,第三个属性叫什么,叫做default value干啥的默认值,默认值就是为我们当前咱们的这一个。这个行参呢,来给它赋值一个默认值,大家一定要看好啊,你的repair的这个属性默认值就是处知道吧,所以说当前你只要把这个注解给它加上之后,那我们当前的Y流所对应的请求参数你必须要传,你不传它就报400。
11:02
一定要看好啊好,那我们现在咱们把它设置为false了,那咱们就不是必须要传的了,然后咱们再看最后一个,对吧,Be beforet value,比如说我在这给他写个什么,咱们给他写个hello,也就是说呀,然后呢,什么时候会给它一个默认值呢?大家注意,就是说你没有传输这个请求参数的时候,我们就会给当前的username这个行参复制一个默认值,这个时候它跟repair。是没有关系的,你不管你是设置的true,设置的还是false,如果我传输过来的有user name这个请求参数,那咱们就把它的值赋值给它,如果你没有传的话,大家注意,那咱们就把默认值赋值给当前的行参。OK吧,好,下边大家看好,我们现在再重新部署,咱们试一次,咱们把咱们这个传输这个请求参数和不传,咱们都来测试一下啊,好,然后我们现在比如说咱们先来传一下对吧,这是root,这是123,点击登录大家看啊看是不是就获取到了,好,那如果说我现在我只传了一个问号password等于123,大家看啊来,你看这个user name是不是就变成hello了,对不对,所以说这个时候require的这个属性值它就无关紧要了,你不管是true还是false对吧,那如果说我传了,那我就大家看啊,我在这设置为true对不对,我们现在咱们再来一个重新部署对吧?然后我们现在不管你到底传了没有传,你没传呢,我也没关系,我直接把默认值给他就行,OK吧,好,然后咱们把它清空,然后下面咱们再来一个刷新,大家看有问题没有,没有问题对吧,直接是不是就把咱们的O。
12:45
这里面输出的信息比较多啊,咱们再重新刷新一次,大家看啊看是默认值就是hello啊,我现在传了没有,没有传,那咱们的repair的还有影响吗?没有影响了啊。啊,所以说呢,大家一定要看好这个就是我们当前的it request per这个注解,它的作用就是将我们的请求参数跟咱们控制器方法的行参进行绑定,里面的三个属性分别是什么意思?来咱们在这上面写一下啊好,第三个问题叫做h requestq啊叫做per request per这个注解它的作用大家注意是将咱们的请求参数,然后和谁请求参数,然后和咱们的控制器方法的行参然后绑定。
13:37
OK。来。然后这里面有三个属性啊,It request per,注解的三个属性,然后第一个叫做value,然后第二个叫做re q u repair,第三个叫def fruit。Value default value好,然后分别什么意思,Value,大家注意这东西是用来设置谁的value,然后来设置啊,然后为咱们的行参赋值的什么,或者说来设置和咱们的行,然后绑定绑定的请求参数的名字。
14:24
OK啊,然后第二个属性叫做repair的,这个东西是用来干什么的,大家注意啊,好,然后来设置是否必须传输谁呀,是否必须传输value所对应的请求参数。OK,看好默认值,然后为处,TR为处啊,然后表示什么,咱们在这这样啊,给它换一个行,默认值为处,然后来表示value所对应的请求参数必须传输啊,然后否则。
15:01
否则。否则对吧,然后页面报错,报什么错,就是我们在这咱们所看到的这个错啊,直接放这儿吧,400对吧,Required string parameter username is not present,或者说咱们在这写个叉叉叉行啊好,然后若设置为什么face force,然后则表示。谁Y流所对应的请求参数对吧?然后不是必须传输,不是必须传输对吧?然后若未传输,若未传输,然后则行参值为难值为nu nu l行,然后大家再来看咱们的最后一个属性叫做default value,然后这个是用来干什么的,大家注意啊,好,然后这个是用来设置设置当啊没有传输,没有传输咱们的Y流所对应的请求参数时,对吧?然后未行参啊,然后设置的默认值,默认值。
16:10
OK吧,然后大家注意,此时和require的此时和我们当前require的属性值,属性值无关,属性值无关,就是说你不管为处还是为false,对吧,我传了那它就有值,我没有传,那它用的就是默认值,知道吧,哎,行,大家注意,这是咱们的request per,当然了,这是特殊情况才需要用的。我们一般情况下,咱们只要保证咱们的行参的名字,然后跟我们的请求参数的名字保持一致就行,OK吧,这也是我们用的最多的方式啊好。
我来说两句