00:00
呃,代码写完了,我们现在呢,测试一下,看一看我们的效果是什么样的。把服务器重新启动一下。启动完成以后,我们接下来来看一看效果。刷新。刷新以后,大家可以看到我们这儿并没有把页面展现出来,而是出现了错误,这个错误是我们平时比较常见的一个错误,叫空值帧异常。那么空指针异常什么时候会出现呢?我们说呀,一般情况下是调用一个为空对象的成员属性或成员方法,会出现控制帧异常,那我们看看我们这里到底发生了什么事情来。他说是user controller的32行,咱们找一下。CONTROLLER32啊,在这个位置。
01:02
在这个位置我们说呀,它出现了空指针异常,那我们的第一印象应该是这个map它为空,因为这个是一个成员方法,那么它为空,就会出现空子正异常。但是我们马上又可以判断出来,不可能。这种情况是不可能的,因为在31行,我是刚刚溜出来的一个map,那绝对不可能他为空。那如果它不是空,那怎么会发生空指针异常呢?其实发生空指针异常就是在这个位置发生的。那么为什么在这个位置发生呢?那是因为我们在这里进行了我们数字的运算,那么数字的运算呢?在这个时候,如果你是包装类型的话,它会把包装类型给它拆开,形成我们的基本类型,那么基本类型来做我们的数字运算。可是包装类型如果是那的话,那么它就无法转换成基本类型,因为基本类型是没有那的,这个时候就会出现空指针异常。
02:06
所以我们现在出现的空子增异常,其实就是因为我们的参数有可能为空。那我们参数到底是不是空呢?我们来判断一下我们的方法参数它什么时候为空,什么时候不为空呢?当你发送请求的时候,如果传递参数了,那么它就不是空,那如果你没传这个参数,那确实就是空。所以啊,我们会发现我们地址栏上确实没有传参数,那没有传参数的话,那这里为空,那是对的,所以啊,那我该怎么办呢?大家看我们其实通过我们的菜单,我点击这个菜单,我发送请求,那我根本就不需要传传参数,为什么?因为我的参数它本身就是第一页。我没必要传,我从菜单点过来,就是点第一页呢,我就不需要传,所以在这种情况下,他有的时候啊,我就不应该传,但你不应该传的话,它会那又不对,所以我们希望如果你不传的话,给你一个默认值,所以圈。
03:11
Request per。我们给它增加一个注解,注解当中我们这里呢,写上有个叫require的,它等于false,你不是必须的,那如果你不是必须的话,我们给你一个默认值,这个默认值呢,我们写上给个一,表示的是如果没有人给你传参数的话,那么你从第一页开始查询。同样道理,我们后面的每页显示多少条,我们也写上。你不是必须的。但是如果你没传值的话,我们给你写上啊,因为我们啊数据库的数据比较少,我就每页显示两条数据得了,写个2A就行了啊。好了,那我现在呢,就把这个稍微的改了一改,因为之前出现了一个空指针异常,那我现在呢,把服务器给它重新启动一下,我们观察一下效果。
04:19
好了,启动成功以后,现在我们再来试一试,我们刷新,然后点击菜单点一下,点点完以后大家观察一下,诶我们这个地方哦,还是出错了,但这个错误呢,还是我们tomcat问题啊。来吧,通重新启动一下。好了,现在呢,已经启动完了,我们再来试一下。刷新。嗯,哦,它这里还是出现了错误,这个错误呢,是我们的那个UR啊,它里面没有添加那个遗email属性,好,我们现在呢,给它补充上啊,这是因为我们之前遗漏了啊,数据库里面我们添加了,但是我们这里忘了写了,嗯,I string,我们的email啊。
05:18
好好保存一下,还得重启一下。好了,重启完了,那我们再来试一试。刷新。诶,我们的数据出来了,大家可以看到我们现在呢,已经把我们的数据展现出来了,没有问题,数据库里面总共三条,那么张三和李四还有个王五,王五呢,由于它是第二页的数据,我们这里并出不来。那我们现在如何能够把王五展现出来呢?很简单,因为我们的参数啊,它默认。我们这里呢是第一页,那你只要给他传一个参数,我们写上叫page number等于二。
06:04
那么他就能出来了,所以回车回车以后大家可以看到王五就出来了,如果你不传,那默认是一,那么我们的,诶张三和李四那就出来了啊,所以呢,我们现在把数据已经展现出来了,没有问题了。
我来说两句