java如何防止重复提交

原创 2018年04月16日 11:23:00

重复提交
比较常见的重复提交的方式有: 1、多次点击提交按钮;2、刷新等
避免方式:Session令牌,保存到页面,提交后用页面的令牌和Session比较

编写步骤
1、对要防止重复提交的操作,页面放置服务器Session的Token值 
<input name="SesToken" value="${SesToken }"  type="hidden"/>

2、提交到后台后做验证

@RequestMapping("/add")
public void add(HttpServletRequest request,HttpServletResponse response,Test test){
//验证重复提交的令牌
if ("false".equals(Token.validToken(request))) {
return;
}
try{

}catch(Exception e){
e.printStackTrace();

}
}

public class Token {
/***
* 设置令牌
* @param request
*/
public static void setToken(HttpServletRequest request){
request.getSession().setAttribute("SesToken",UUID.randomUUID().toString() );
}


public static String getToken(HttpServletRequest request){
String sessionToken = (String)request.getSession().getAttribute("SesToken");
if(null == sessionToken || "".equals(sessionToken)){
sessionToken = UUID.randomUUID().toString();
request.getSession().setAttribute("SesToken",sessionToken );
}
return sessionToken;
}


/***
* 验证是否为重复提交
* @param HttpServletRequest request
* @return String true非重复提交,false重复提交,error非法操作
*/
public static String validToken(HttpServletRequest request){ 
String sessionToken = (String)request.getSession().getAttribute("SesToken");
String requestToken = request.getParameter("SesToken");
if(null == sessionToken  || "null".equals(sessionToken)){
sessionToken = "";
}
if(null == requestToken || "null".equals(requestToken) ){
requestToken = "";
}

if(sessionToken.equals(requestToken)){
//返回前一定要重置session中的SesToken
request.getSession().setAttribute("SesToken",UUID.randomUUID().toString() );
//非重复提交
return "true";
}else{
//返回前一定要重置session中的SesToken
request.getSession().setAttribute("SesToken",UUID.randomUUID().toString() );
//重复提交
return "false";
}
}
}

JavaWeb 如何防止表单重复提交 - 使用Token,令牌

JavaWeb 如何防止表单重复提交 - 使用Token,令牌 说到重复提交 ,应该想到两种场景: 1. 在下单,或者支付 这种情况 那么不允许  刷新,不允许后退再点击提交。 2. 在填写表单之后,...
  • u011042188
  • u011042188
  • 2015-09-20 14:29:02
  • 15901

Java Web防止表单重复提交

转载请注明出处: 注:本章内容基于struts2框架,action就相当于servlet 哎,今天遇到这个问题快把我搞崩溃了咯,但是,注意只是快,并没有- -,感觉自己就像卡卡罗特一样啊,只要不把...
  • qq_15002323
  • qq_15002323
  • 2016-04-26 20:21:43
  • 1509

javaweb开发之防止表单重复提交

一、产生表单重复提交可能的情况 1. 由于服务器缓慢或网络延迟等原因,导致用户重复点击提交按钮。 2. 使用forward方式已经提交成功,再次刷新成功页面导致重复提交。 3. 已经提交成功,通过回退...
  • u012843873
  • u012843873
  • 2017-02-16 17:47:09
  • 2351

JavaWeb避免表单的重复提交

表单的重复提交 index.jsp /tokenServlet" method="post"> name: TokenServlet.java pa...
  • yuchao2015
  • yuchao2015
  • 2017-02-26 21:30:30
  • 1698

javaweb开发之防止重复提交

防止重复提交 一、产生表单重复提交可能的情况 1. 由于服务器缓慢或网络延迟等原因,导致用户重复点击提交按钮。 2. 使用forward方式已经提交成功,再次刷新成功页面导致重复提交...
  • u012618337
  • u012618337
  • 2016-02-24 14:59:10
  • 1555

java防止请求重复提交

用token,使用token的逻辑是,给所有的url加一个拦截器,在拦截器里面用java的UUID生成一个随机的UUID并把这个UUID放到session里面,然后在浏览器做数据提交的时候将此UUID...
  • tianhong2015
  • tianhong2015
  • 2017-08-02 13:59:48
  • 1159

java实现防止表单重复提交

  • 2010年07月19日 10:46
  • 3KB
  • 下载

防止重复提交的前后台实现

在日常生活中,网速不好的时候,经常出现提交表单后网页没有跳转或一直在跳转中,这时可能急性子的用户就会不停地按提交按钮,导致重复提交。重复提交会加重服务器压力。今天我们就来讨论下怎么防止重复提交···...
  • wws199304
  • wws199304
  • 2015-03-15 19:19:58
  • 4088

java防止页面刷新重复提交

看了网上的,有几种方法: 1 在你的表单页里HEAD区加入这段代码: 2 生成一个令牌保存在用户session中,在form中加一个hidden域,显示该令 牌的值,...
  • JasonSSH
  • JasonSSH
  • 2012-05-02 16:32:20
  • 13735

java后端解决重复提交问题

一、为什么会出现重复提交? 主要是由于网络的延迟问题以及页面刷新的操作。 二、表单的重复提交会导致的问题? 主要能够造成很多脏数据。 三、解决的办法: 3.1 前端解决办法:通过...
  • zwb19940216
  • zwb19940216
  • 2017-10-02 18:10:15
  • 1726
收藏助手
不良信息举报
您举报文章:java如何防止重复提交
举报原因:
原因补充:

(最多只允许输入30个字)