13-Jsp防止二次提交(重複提交) 時間戳
servlet頁面程式碼:@每次請求時產生一個token(一般為時間戳),存於session中並隨之用hidden提交,在servlet中判斷接收到的token和session中的是否一致來判斷是否重複提交,如果不是則重新產生一個 token存於session中覆蓋原來的token。
@當使用者返回或者重新整理重複請求servlet時,servlet判斷token是否一致,由於請求方沒有產生新的token,所以和servlet新產生的token不一致,認為重複提交。
@當使用者在請求頁面重新整理也就是重新在請求頁面產生token,這時新的token覆蓋servlet產生的token,這時token一致,認為是一個新的請求。
@請求的jsp頁面程式碼:
<body>
<%
long token=System.currentTimeMillis(); //產生時間戳的token
session.setAttribute("token",token);
%>
<form action="isRepeat" method="post">
<input type="text" name="username"/>
<input type="text" name="password"/>
<input type="hidden" value="<%=token %>" name="token"/> <!-- 作為hidden提交 -->
<input type="submit" value="提交"/>
</form>
</body>
@servlet頁面程式碼:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html,charset=utf-8");
String username=req.getParameter("username");
String password=req.getParameter("password");
long token=Long.parseLong(req.getParameter("token"));
long tokenInSession=Long.parseLong(req.getSession().getAttribute("token")+"");
if(token==tokenInSession){
resp.getWriter().println("ok ");
//如果是第一次請求,則產生新的token
req.getSession().setAttribute("token", System.currentTimeMillis());
}
else
{
resp.getWriter().println("do not repeat submit");
}
}
作者“如戲”
相關文章
- js 防止重複提交方案JS
- 前端如何防止介面重複提交前端
- PHP 防止表單重複提交PHP
- SpringBoot如何防止重複提交?- Adrian AdendrataSpring Boot
- Struts2防止表單重複提交
- 前端防止使用者重複提交-js前端JS
- PHP防止使用者重複提交表單PHP
- 如何防止使用者重複提交訂單?(下)
- 如何防止使用者重複提交訂單?(上)
- 如何防止使用者重複提交訂單?(中)
- axios 重複提交iOS
- 分散式重複提交分散式
- PHP透過session判斷防止表單重複提交例項PHPSession
- 如何使POST請求具有冪等性防止重複提交 - mscharhag
- Java使用Redis實現分散式鎖來防止重複提交問題JavaRedis分散式
- java 表單避免重複提交?Java
- jFinal避免表單重複提交
- 如何避免表單的重複提交?
- Spring MVC表單防重複提交SpringMVC
- 重複提交,你是如何處理的?
- WEB安全新玩法 [8] 阻止訂單重複提交Web
- SpringMVC後臺token防重複提交解決方案SpringMVC
- iOS UIButton之防止重複點選(控制事件響應時間間隔)iOSUI事件
- 分散式重複提交問題架構設計思路分散式架構
- JWT+ASP.NET MVC 時間戳防止重放攻擊JWTASP.NETMVC時間戳
- 防止點選enter回車提交表單
- #每日一記#防止按鈕在短時間內重複點選
- 獲取時間戳,幾個時間點的時間戳時間戳
- MySQL時間戳、時間MySql時間戳
- 【java工程師必知必會】spring防重複提交AOP方式Java工程師Spring
- pbootcms提交留言、提交自定義表單時取消驗證碼boot
- JavaScript 時間戳JavaScript時間戳
- kafka時間戳Kafka時間戳
- C# 時間戳轉時間C#時間戳
- 時間型別和時間戳型別時間戳
- PHP 防抖(防重複提交)有哪些實現方法,具體程式碼PHP
- 架構設計 | 介面冪等性原則,防重複提交Token管理架構
- Spring Boot + Redis 解決陪玩平臺原始碼重複提交問題Spring BootRedis原始碼
- git 修改提交作者及提交日期Git