博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
表单重复提交与解决
阅读量:5077 次
发布时间:2019-06-12

本文共 1038 字,大约阅读时间需要 3 分钟。

1、什么是表单重复提交

1.1 刷新页面

  在jsp页面点击提交后,会有一个post请求发到testController中,该Controller直接返回success视图。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    首页    
@RequestMapping("hello")    public String test() throws InterruptedException {        System.out.println("重复提交");        //Thread.sleep(10000);        return "success";    }

  此时虽然页面跳转到了success视图,但是浏览器URL里显示的还是hello,如果此时刷新浏览器那么会重复是向后台提交数据。

1.2 响应过慢

  上面这种情况还可以通过redirect解决,即登陆后的页面重定向到新的页面来避免。但如果是因为网速过慢导致的页面没有发生跳转,用户以为此时没有发出请求而重复点击提交按钮也会造成表单重复提交。

  还是上面的jsp,我在Controller里加入睡眠来模拟网速太慢造成的相应过慢。此时点击提交后会看到页面处在加载状态但是没有发生跳转,如果再次点击提交也会造成重复提交。

@RequestMapping("hello")    public String test() throws InterruptedException {        System.out.println("重复提交");        Thread.sleep(10000);        return "success";    }

 

2、后端如何解决表单重复提交

  表单重复提交在前端可以通过js来解决,但是如果浏览器禁用了js就无效了。

  通过token来实现这一功能需要分为两步,需要对两个Controller下手:1、对跳转到登陆页面的Controller,每次来都这个Controller的时候加入Token 2、对post请求的Controller,每次检验并删除Token。

  

  

转载于:https://www.cnblogs.com/AshOfTime/p/10692322.html

你可能感兴趣的文章
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
查询消除重复行
查看>>
Win 10 文件浏览器无法打开
查看>>
HDU 1212 Big Number(C++ 大数取模)(java 大数类运用)
查看>>
-bash: xx: command not found 在有yum源情况下处理
查看>>
[leetcode]Minimum Path Sum
查看>>
内存管理 浅析 内存管理/内存优化技巧
查看>>
hiho1079 线段树区间改动离散化
查看>>
【BZOJ 5222】[Lydsy2017省队十连测]怪题
查看>>
第二次作业
查看>>
【input】 失去焦点时 显示默认值 focus blur ★★★★★
查看>>
Java跟Javac,package与import
查看>>
day-12 python实现简单线性回归和多元线性回归算法
查看>>
Json格式的字符串转换为正常显示的日期格式
查看>>
[转]使用 Razor 进行递归操作
查看>>
[转]Android xxx is not translated in yyy, zzz 的解决方法
查看>>
docker入门
查看>>
Android系统--输入系统(十一)Reader线程_简单处理
查看>>
监督学习模型分类 生成模型vs判别模型 概率模型vs非概率模型 参数模型vs非参数模型...
查看>>