java如何防止重複提交
sunshine_小妖
於 2018-01-22 14:44:22 發佈
19580
收藏 15
分類專欄: 小知識
版權
小知識
專欄收錄該內容
1 篇文章0 訂閲
訂閲專欄
重複提交
比較常見的重複提交的方式有: 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 {
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;
}
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";
}
}
}
————————————————
版權聲明:本文爲CSDN博主「sunshine_小妖」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出処鏈接及本聲明。
0條評論