日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

学习Java 采取令牌的方式避免重复提交

發布時間:2024/4/15 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习Java 采取令牌的方式避免重复提交 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

重復提交原因

從提交頁面到成功頁面的跳轉一般采用視圖定位,由于視圖定位是在服務端跳轉的,如果用戶在點擊提交之后再次刷新頁面,會導致重復提交,數據庫的數據會有重復。

采用令牌措施

1、在轉賬展示頁面生成一個隨機的令牌號碼,然后放入session和傳參中。
@RequestMapping("/toTrans")//public String toTrans(ModelMap modelMap, HttpSession session) {//!////如果是轉賬,則先查詢余額String cardNo = (String) session.getAttribute("cardNo");String balance = cardInfoService.findByCardNo(cardNo).getBalance();modelMap.addAttribute("balance", balance);String token = UUID.randomUUID().toString();session.setAttribute("token",token);modelMap.addAttribute("token",token);//跳轉到轉賬頁面return "trans";}
2、跳轉到轉賬的trans.jsp文件,注意傳參要輸入name和value,否則Controller層找不到。
``` <form id="transForm" class="am-form am-form-horizontal" action="/trans/doTrans.do" method="post"><input name="bToken" id="bToken" value="${token}"><%--傳參要用name、value,否則Controller找不到--%> <div class="am-form-group"><div class="am-u-sm-9 am-u-sm-push-3"><button type="button" onclick="submitForm()" class="am-btn am-btn-primary">提交</button></div> </div> 3、獲取傳參的令牌與session中的令牌比較,看是否一樣,一樣則進入轉賬成功頁面,否則轉賬失敗。注意進入轉賬成功頁面后需要銷毀令牌,以防重復提交。 @RequestMapping("/doTrans")//? public String doTrans(ModelMap modelMap, @RequestParam String bToken, HttpSession session, @RequestParam String checkInCardNo, @RequestParam String realName, @RequestParam String money) {//!try {String cardNo = (String) session.getAttribute("cardNo");String token = (String) session.getAttribute("token");cardInfoService.forward(cardNo, checkInCardNo, money, realName);if (!bToken.equals(token) || bToken == null || token == null) {session.removeAttribute("token");/*此處可刪可不刪*/return "fail";}session.removeAttribute("token");return "success";//?為什么success.jsp放在web-inf下面,返回地址會是tans/web-inf...} catch (Exception e) {e.printStackTrace();modelMap.addAttribute("msg", e.getMessage());return "fail";}}

```

經過上述步驟,當進入轉賬成功頁面后,因為令牌已經銷毀,當用戶再次刷新時,將會跳轉到轉賬失敗頁面,從而避免了重讀提交的問題。

轉載于:https://www.cnblogs.com/HashMap-Fantasy/p/8972313.html

總結

以上是生活随笔為你收集整理的学习Java 采取令牌的方式避免重复提交的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。