1. 程式人生 > >關於重新整理時表單重複提交問題

關於重新整理時表單重複提交問題

解決方法和原因--->

解決方法:

        一、在頁面生成一個隨機數,放在session域中;

        二、並在form表單中設定一個隱藏標籤,值為之前生成的隨機數,和表單資料一起提交給後臺;

        三、後臺對錶單中的隨機數進行判斷:

                1、表單隨機數為空

                2、session中隨機數為空(1、2可能是未走頁面入口)

                3、表單隨機數與session中的隨機數不相等(表單隨機數共享request中的資料,所以一直都是一樣的,而session中的隨機數是每次進頁面重新產生的。這導致兩個隨機數不相等)

        四、以上三種情況都說明表單是重複提交的,後臺可以不進行表單處理操作直接返回。

        五、除此三種情況,對錶單進行正常處理,正常業務進行完要記得將session中的隨機數移除

原因:

Q:新增完資料後重新進入了頁面,按理來說表單資料被清空了,為什麼再次重新整理還是能提交先前表單的資料,如

<input type="hidden" name="forward" value="/jsp/room/roomList.jsp">

A:這是轉發與重定向的區別:

      forward共享同一個request(準確來說,在jboss與tomcat中,兩個request是不一樣的。第一次的請求物件是

[email protected];轉發後,伺服器對第一次的請求物件進行了轉換,請求物件變成了[email protected]。但是他們兩者都實現了ServletRequest介面,可以互相轉換)。

        當再次重新整理頁面時,後臺接收的request中資料和上次一樣,所以看起來又進行了一次表單提交,這就是為什麼重新整理頁面會重新提交表單。所以,將轉發換成重定向也能解決重新整理重複提交表單的問題。

參考與轉載自:https://www.cnblogs.com/bulrush/p/5668721.html

                        https://blog.csdn.net/qx5211258/article/details/45220135

                        https://bbs.csdn.net/topics/390899266(關於轉發,兩次請求是否是同一個request物件)

相關推薦

關於重新整理重複提交問題

解決方法和原因--->解決方法:        一、在頁面生成一個隨機數,放在session域中;        二、並在form表單中設定一個隱藏標籤,值為之前生成的隨機數,和表單資料一起提交給後臺;        三、後臺對錶單中的隨機數進行判斷:         

F5重新整理-引起重複提交解決-

一、簡介 Struts2使用token攔截器來檢查表單是否重複提交,採用的是同步令牌的方式。 同步令牌方式:伺服器端在處理到達的請求之前,會將請求中包含的令牌值與儲存在當前使用者會話中的令牌值進行比較,看是否匹配。在處理完該請求後,且在答覆傳送給客戶端之前,將會產生一

jsp中防止重新整理後退等操作造成重複提交(純jsp或者struts)

5  利用struts的同步令牌機制      利用同步令牌(Token)機制來解決Web應用中重複提交的問題,Struts也給出了一個參考實現。    基本原理:     伺服器端在處理到達的請求之前,會將請求中包含的令牌值與儲存在當前使用者會話中的令牌值進行比較,看是否匹配。在處理完該請求後,且在答覆傳送

防止重新整理頁面造成重複提交

  public partial class _Default : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         //第一次載入的時候,

easyui關於解決tab新增的頁面通過href載入資料內容的頁面重新整理後form重複提交的問題;

1.分析 Easyui中的tabs元件以href方式載入目標頁面,如果目標頁面中有dialog或者window這類的easyui元件中放了form.那麼在關閉這個tab再次開啟或者點選重新整理.如果進行form提交操作,後臺就會收到兩次提交請求,再次重複以上操作會收到3

jq提交 禁用提交按鈕 防止重複提交 jq方法

防止表單重複提交 function(event,options){ $("#submit_login").attr({"disabled":"disabled"}); var needtime =

thinkphp 解決頁面重新整理重複提交的問題

控制器中 session_start(); $code =mt_rand(0,1000000); $_SESSION['code'] = $code; $this->assign('code'

Spring MVC 回退重新整理重複提交

    基於Spring MVC進行Java Web開發時,如果使用表單進行提交資料,然後跳轉到某個URL由Controller進行處理,最後返回邏輯檢視,框架會通過viewResolver來解析具體的View,然後向返回給瀏覽器顯示【參考】。 <bean

利用session防止重複提交

使用者在提交表單的過程中,由於網路等原因,可能重複點選提交按鈕,向資料庫重複寫入或者讀取資料,為了防止這種情況發生。   解決方式: 1.客戶端防表單重複提交,在前端使用javascript限制。但是在前端並不能完全限制,比如下網頁原始碼更改,重複重新整理等。 2.服務端防

問題記錄-----重複提交==>利用session驗證

問題記錄-----表單重複提交==>利用session驗證 大概方法就是利用session生成一個token做提交驗證,話不多說上程式碼 html程式碼 <form id="frmsave" action="" enctype="multipart/form-dat

Java 使用Token令牌防止重複提交

Token驗證詳解 參考來源:https://blog.csdn.net/woshihaiyong168/article/details/52857479 使用Token令牌防止表單重複提交 參考來源:https://blog.csdn.net/cuiyaoqiang/article/d

ajax 避免重複提交

ajax beforeSend 避免表單重複提交 $.ajax({ url: '/admin/plan/add', type: 'post', data: $("#

用session防止重複提交

session案例1:防止表單重複提交   原理:     1,表單頁面由servlet程式生成,servlet為每次產生的表單頁面分配一個唯一的隨機標識號,並在FORM表單的一個隱藏欄位中設定這個標識號,同時在當前使用者的Session域中儲存這個標識號。

struts2-註解&防止重複提交

註解: 註解沒有分號 註解首字母是大寫,因為註解與類、介面是同一級的。一個註解後臺對應一個@interface類 同一語法單元,同一註解只能使用一次 在註解與語法單元間可以隔若干空行、註釋等非程式碼內容 在struts2中使用註解,主要完成對Act

防止重複提交的幾種方法總結

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/Warpar/article/details/72917924 1、JavaScript防止表單重複提交(主要用於網路延遲情況下使用者點選多次submit按鈕導致表單重複提

防止重複提交---筆記

1. 防止表單重複提交 1.在使用者訪問頁面(設為頁面A)時session設定一個屬性(設為check) 值為 md5(當前時間)設為checkvalue, 且在表單中設定隱藏域 value為checkvalue 2.當用戶提交 在servlet裡檢測se

自定義註解攔截器,防止重複提交

1.自定義註解 package com.paotui.util; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import ja

防止重複提交

問題:什麼是表單重複提交?                     regist.jsp----->RegistServlet         表單重複提交 危害: 刷票、 重複註冊、帶來伺服器訪問壓力(拒絕服務)                  解決方案:     

Struts2筆記之重複提交

前言 防止表單重複提交在web開發中是一個經常遇到的問題,一般來避免重複提交有兩種方式:客戶端JavaScript程式碼實現和服務端程式碼實現。這裡主要介紹服務端的實現方式。在服務端實現表單重複提交的基本原理是:通過建立一個Session物件,併產生一個令牌值,將這個令牌值

Struts2 重複提交問題

1.什麼是重複提交 在不重新整理表單頁面的情況下 》多次點選提交按鈕 》已經提交成功了,按“回退”之後,再點選"提交按鈕" 》在控制器相應頁面的形式為轉發的情況下,已經提交成功,然後點選重新整理或者f5 注意: 》若重新整理表單頁面,再提交表單就不是重