00:00
那么接着呢,我们来看一下这个表单重复提交,那么表单重复提交,其实咱们第一次遇见是什么时候啊啊,第一次遇见是在后台添加图书的时候,咱们见到过啊,大家注意看表单重复提交有三种常见的。情况,哎,那么第一种,第一种是什么?就是提交完表单,那么服务器使用请求转发来进行页面跳转,这个时候用户按下功能键F就会发起最后一次的请求,那么造成表单重复提交问题。这第一种常见的情况,那么这种情况怎么处理啊,那么解决方法。哎,就是使用重定向来进行跳转是吧,使用重定向来进行跳转,好,那我们演示一下哈。
01:08
呃,我们在这里呢,建一个临时的工程。咱们建一个临时的工程,嗯,咱们就建一个model。选择它叫做。叫做什么东西呢?下一步叫做T吧,或者temp是吧,临时的啊临时的好。然后在这里面我们来模拟一下表单,重复提交,首先你得有个什么东西,有个登录。改成这个名字。好。这个登录里面其实有什么东西,有表单。啊,来我们看一下用户名。好,这个是usual name。
02:06
啊,有的那用户名。然后呢,再来一个密码。密码呢,这些得改password password好,那还有一个提交按钮。登录是吧,登录然后呢,还要有一个什么东西啊,就是程序来接收这个请求,那么我们在这里准备一下。准备一个包抗艾硅谷点。然后准备这个类。好,叫做login好吧,继承HTP。
03:06
都get。啊,都盖的请求,然后在这里面干什么事情啊,大家注意看啊,就是获取用户名和密码。对吧,然后就是比较用户名和密码,呃,咱们这个不应该是登录,应该是注册。注册啊。那我们改一改。记注册,那么如果是注册的话,呃,咱们用户名和密码好,就这么留着吧啊,其实简单一点就用户名就行了啊,越简单越好,就来个用户名好,那么这边我们改一下这个名字啊。被叫做。就可以了,那这时候只需要获取用户名request.get。
04:02
Get parameter。然后是。好,那么这个地方就是U面板。然后这个时候大家注意看,咱们得到这个用户名后就保存到数据库啊,保存到数据库后有用一行代码演示啊,保存到数据库加上有量,那么保存完之后咱们是不是转发呀?呃,我们在这边再给一个页面。OK,咱们说注册成功。呃,注册成功,那么这边来。继承汤有什么问题?就记得点赞吧。啊,我重新编译一下看有啥问题啊。他说,流的泪。公共的应该在声明public class,这不是公共的吗?
05:01
HTTP。那我们看一下哈,抗点爱的硅谷。重新写一下public class,然后叫继承HTP。OK。啊,应该是这里没改过来吧。啊,这是它的一个内部类的是吧,把这外面这个改了。就好了,这样就没事了啊好了。那么保存到数据库之后,大家看一下request.get request斜杠表示到工程名,映射到代码的web这个目录啊,咱们跳到这里面来,ok.jp.for what request response。好,那现在呢,咱们来看一下哈。我把这个改一改。
06:03
Champ tmp是吧,这临时的好呃,然后呢,咱们把这个也改一下,就是champ。哎呀,没有没有改完不小心就点了一下。取消好,然后大家看一下,这边咱们都改哈。OK,哎,都改好了,确认一下。没问题,好,咱们咱们现在启动它来试一下这个注册啊,看看是不是有表单重复提交的现象。呃,什么意思?他说你的端口已经被占用,咱们先停一下。先停一下,为什么咱们原来那个还还开着呢。啊,咱们原来的这工程还有开着的。OK,确认了吗?啊都关了哈,都关了以后再回来再启动就可以了。
07:05
好的一个启动。稍等启动之后呢,咱们来访问一下,对,记得点JP,那么大家注意看看哈,ZWT168,我们点击提交。登录。啊,我们还没有修改那个请求地址是吧,咱们这个基的策略还没有写地址。我们到这边来写一下。叫做,然后还需要这个杠name,呃,这个呢,就把这个类名拿过来。Mapping。好,然后里面是什么东西,里面是需要这个serve name,还需要一个URL pattern,斜杠把类名拿过来,首字母改小写。
08:07
Okay。好,这就写好了,我把这个请求地址啊拿过来,放到我们注册这里面来走,或者你写上完整的地址,ATP冒号双斜线local host,然后8080。啊temp它啊也行,这样也行哈,来重新部署一下走web点叉没有记住啊,配置文件改过之后一定要重启才能生效的啊,要重启才能生效的诶。部署呢,成功了,成功以后咱们来看一下。访问ZZWG168,点击提交,大家看注册成功是吧,这边是不是已经保存到数据库了,又插入一次了,那这个时候如果用户按下功能键F,你看我刷新了好多次,看看数据库,数据库是不是也插入了很多条机会,这就是表单重复提交,那这个时候大家注意看怎么办?我们说这种情况啊,只要使用重对项就可以了。
09:11
就我们不用这个群转发了。Response点啊好,那么这个时候大家看request.get container pass,再加上什么东西呢?呃,再加上咱们的这个斜杠,OK,点接P,这个时候重叠项就没有啥问题,来咱们重新部署一下。啊,这个内容少,编译的也快一点,你看好了啊,来这个时候我们再来z wa。就这个也行吧,W也行哈,那这个时候大家看你刷新F5,你刷新刷新刷新这边是不是不会再造成表单重复提交了,好,这是表单重复提交的第一种情况和解决方法。
10:09
OK,那么第二种情况呢,就是嗯,用户正常提交服务器,但是由于网络。延迟。等。原因,哎,那么迟迟未收到服务器的响应,这个时候用户以为提交有问题,或者是提交失败,以为提交失败就会着急,然后多点了几次提交操作,也会造成表单重复提交。我给你演示一下啊,现在啊。我在这个地方让他延迟,我怎么延迟sleep?
11:07
Sleep一下,呃,咱们说这个多少啊,嗯。很久是吧,再等个五秒钟,哎,五秒钟之后。咱们再来看一下我穿开水下哈。好,如果说等了五秒迟迟不反应,那这时候用户就比较着急了,来咱们重新的部署一下。稍等啊。重新部署了,这时候咱们来看一下哈,我回来ZWT168点击登录,你看迟迟没回来吧,用户觉得诶咋还没有回来呢,你看看他就一直点一直点一直点,他也不知道啥情况,其实你看服务器已经插入了很多很多条记录了,看见了吗。诶,这个呢,就是表单重复提交,你看很久才注册成功哦。是吧,那这个时候呢,怎么办?原来重对象也不能解决所有的问题,这是一种,另一种是它也不延迟了。
12:07
他也不延迟,但是注意看啊。三就是用户正常提交服务器,服务器也没有什么呢延迟,但是提交完成后用户回退浏览器。重新提交。也会造成表单重复提交,注意看一下哈,我们重新部署一下。这个时候是什么情况啊。好,你看重新提交重新部署了哈,来回来,这时候你看一下哈,我们刷新ZW7168提交是不是已经成功了,这个时候你看上面点击这个你看点击可回推。
13:01
他点击回退之后又跳回这个页面,再次点,再次点再次点看见了吗?你看服务器是不是同样有这个表单重复提交,哎,这就是表单重复提交三种常见的情况。
我来说两句