国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 淺談利用Session防止表單重復提交

淺談利用Session防止表單重復提交

2021-02-28 11:00amork Java教程

這篇文章主要介紹了淺談利用Session防止表單重復提交,簡單介紹表單重復提交的情況,分析,以及解決方法代碼示例,具有一定借鑒價值,需要的朋友可以了解下。

解決項目中表單重復提交的問題,在平常的項目中有以下幾種可能出現表單重復提交的情況,比如說:

1.由于服務器緩慢或者網絡延遲的原因,重復點擊提交按鈕

2.已經提交成功,但是還不停刷新成功頁面

3.已經提交成功,通過回退,再次點擊提交按鈕。

這些情況都可能使數據庫中產生過多相同的冗余數據,浪費數據庫資源。只有轉發才會出現,重定向則不會。

針對第一種情況的解決方案(使用JavaScript),對后面兩種無效:

首先在頁面中添加如下格式的JavaScript代碼

?
1
2
3
4
5
6
7
var submitFlag=false;
function checksubmit(){
if(!submitFlag){
 submitFlag=true;
 document.forms[0].submit();
 }
}

(1)當提交按鈕的type屬性為button時:

設置按鈕的onClick=”checksubmit();”即可。

(2)當提交按鈕的type屬性為submit時:

設置按鈕的onClick=”checksubmit();”,并在<form>標簽中增加onsubmit=”returnfalse”。因為submit按鈕的自動提交時在點擊事件提交之后,將onsubmit設置為”returnfalse”,submit按鈕的自動提交就會失效。

對于后面兩種情況,可以使用session解決,其原理是在運行添加信息頁面時在session中放置信息,然后頁面提交信息給servlet處理,servlet獲取session中的信息,如果session中有信息不為空則將信息插入數據庫,然后刪除session中的信息,下次再提交表單時session中的信息為空,那么則不執行存儲信息過程。

但是單純使用session有其局限性,所以在實際開發中,一般使用利用session結合UUID解決表單的重復提交,代碼如下:

定義一個UuidToken類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class UuidToken {
    private static UuidToken UuidToken=new UuidToken();
    private UuidToken(){
    }
    public static UuidToken getUuidToken() {
        return UuidToken;
    }
    public synchronized String getUUIDAsStr(HttpServletRequest request){
        HttpSession session=request.getSession();
        String uuidStr=UUID.randomUUID().toString();
        if(uuidStr!=null){
            session.setAttribute("session.uuid", uuidStr);
        }
        return uuidStr;
    }
    /**
 * 判斷session中保存的uuid和jsp頁面上的uuid是否相等
 */
    public synchronized Boolean isUUIDValidate(HttpServletRequest request) {
        //獲取已存在的session
        HttpSession session=request.getSession(false);
        if(session==null){
            return false;
        }
        String sessionuuid = (String)session.getAttribute ("session.uuid");
        if(sessionuuid==null){
            return false;
        }
        String htmluuid=request.getParameter("html.uuid");
        if(htmluuid==null){
            return false;
        }
        return sessionuuid.equals(htmluuid);
    }
    /**
 * 刪除uuid
 */
    public synchronized void resetUUID(HttpServletRequest request) {
        HttpSession session=request.getSession(false);
        if(session==null){
            return;
        }
        session.removeAttribute("session.uuid");
    }
}

在jsp頁面增加一個隱藏域,利用uuid生成一個唯一的標識號,賦給隱藏域,把唯一的標識號 放置到session中一份,代碼如下:

?
1
<input type="hidden" name="html.uuid" value='<%=UuidToken.getUuidToken().getUUIDAsStr(request)%>'>

提交給servlet后,獲取 jsp頁隱藏域的值,用隱藏域的值和session中放置的值做比對,如果相同,保存數據并從session中刪除UUID,不相同則說明是重復提交,不進行處理。

?
1
2
3
4
5
6
7
8
Boolean flag= UuidToken.getUuidToken().isUUIDValidate(request);
if(flag){
    // 保存信息到數據庫
    //從session刪除uuid的
    UuidToken.getUuidToken().resetUUID(request);
} else{
    System.out.println("表單重復提交");
}

總結

以上就是本文關于淺談利用Session防止表單重復提交的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/amork/article/details/6247168

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 一区二区在线不卡 | 91国内视频在线观看 | 日本在线小视频 | 欧美一区二区三区在线视频 | 精品国产乱码久久久久久影片 | 在线一区观看 | 91成人短视频在线观看 | 亚洲精品a | 黄视频免费观看网站 | 97精品在线 | 黄色三级网站在线观看 | 日韩av免费在线观看 | 喷水av| a级在线免费观看 | 成年人黄色免费视频 | 久久久无码精品亚洲日韩按摩 | 播放欧美一级片 | 国语精品久久 | 欧美精品一区二区久久 | 韩日精品视频 | 一区二区在线电影 | 国产精品一区二 | 一本久道视频一本久道 | 国产成人精品免费视频大全最热 | 成人在线观 | 久久网站热最新地址 | 美女一区二区三区 | 青青草97| 视频一区二区在线观看 | 精品视频在线免费观看 | 国产精品视频一 | 日韩高清不卡一区二区三区 | 国产免费成人 | 青青久久北条麻妃 | 精品成人av | 精品国产91乱码一区二区三区 | 亚洲欧美制服诱惑 | 色淫av| 中文字幕一区二区三区乱码在线 | 日本中文在线 | 亚洲一级淫片 |