国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 網頁設計 > 正文

重復提交、重復刷新、防止后退的問題以及處理方式分析

2024-08-30 08:34:31
字體:
來源:轉載
供稿:網友
一。前言
你在任何一個比較專業的BBS都會看到這樣的問題,即使你Google一下,也會發現有很多的人在關注和詢問,但大家給出的解決方法卻都是千差萬別,(有的人主張采用腳本來解決;有的則想重定向到別的頁面;有的則將此問題提升到Token的角度)為什么會有如此大的差異呢?
二。問題場景
首先,我們應該先了解為什么要處理這樣的問題?或者專業一點就是它適合的場景是什么?(似乎只有人來問沒有人來解釋)
1。重復提交、重復刷新的場景
重復提交、重復刷新都是來解決系統重復記錄的問題。也就是說某個人在多次的提交某條記錄(為什么?也許是閑了沒有事情干的;最有可能是用戶根本就不知道自己的提交結果是否已經執行了?!)。
但出現了這樣的問題并不見得就必須處理,要看你所開發的系統的類別而定。比如你接手的是某個資源管理系統,系統本身從需求的角度根本就不允許出現"重復"的記錄,在這樣需求的約束條件下,去執行重復的提交動作只會引發“業務級異常”的產生,根本就不可能執行成功也就無所謂避免不避免的問題了。
2。防止后退的場景
了解了重復刷新、重復提交的場景,我們來了解一下"防止后退"操作的原因是什么?比如你在開發某個投票系統,它有很多的步驟,并且這些步驟之間是有聯系的,比如第一步會將某些信息發送給第二步,第二步緩存了這些信息,同時將自身的信息發送給了第三步。。。。。等等,如果此時用戶處在第三步驟下,我們想象一下某個淘氣用戶的用戶點擊了后退按鈕,此時屏幕出現了第二步驟的頁面,他再次的修改或者再次的提交,進入到下一個步驟(也就是第三步驟),錯誤就會在此產生?!什么錯誤呢?最為典型的就是這樣的操作直接導致了對于第一個步驟信息的丟失!(如果這樣的信息是依靠Request存放的話,當然你可以存放在Session或者更大的上下文環境中,但這不是個好主意!關于信息存放的問題,下次在就這個問題詳細的討論)
三。如何處理的問題
當然很多的系統(比如訂票系統從需求上本身是允許個人重復訂票的)是必須要避免重復刷新、重復提交、以及防止后退的問題的,但即使是這樣的問題,也要區分如何處理以及在哪里處理的(網上只是告訴你如何處理,但很少去區分在哪里處理的),顯然處理的方式無非是客戶端或者服務器端兩種,而面對不同的位置處理的方式也是不同的,但有一點要事先聲明:任何客戶端(尤其是B/S端)的處理都是不可信任的,最好的也是最應該的是服務器端的處理方法。
客戶端處理:
面對客戶端我們可以使用Javascript腳本來解決,如下
1。重復刷新、重復提交
Ways One:設置一個變量,只允許提交一次。

復制代碼
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 斗六市| 信宜市| 温宿县| 蚌埠市| 沈阳市| 宁武县| 平阴县| 瑞安市| 松江区| 邳州市| 无为县| 宁国市| 阜宁县| 绥芬河市| 盐山县| 平安县| 柳河县| 吴忠市| 永登县| 淮滨县| 高雄县| 屏东市| 永吉县| 赣榆县| 滁州市| 济阳县| 开鲁县| 时尚| 运城市| 长寿区| 赤壁市| 密山市| 鹤庆县| 汉阴县| 同江市| 芜湖县| 台中县| 稷山县| 城口县| 安新县| 德江县|