5 回答

TA貢獻1836條經驗 獲得超13個贊
1.新建兩個文件
index.jsp -- 表單頁面
success.jsp -- 結果提示頁面
2
2.代碼分別如下:
3
3.新建TokenServlet,代碼如下
4
4.運行index.jsp,輸入用戶名,點擊提交
5
5.正常跳轉結果頁面
6
6.但當我在這個頁面點擊刷新的時候,出現如下提示
7
7.點擊重試,發現又一次調用了servlet,這就是一個重復提交
8
8.多刷新幾次,注意看URL地址,現在仍然是servlet
9
9.以前說重定向可以解決表單重復提交的問題,我們修改Servlet代碼如下
10.再次測試,發現重定向到了success.jsp ,再點擊刷新的話也不會出現重復提交了
11.那問題解決了么?再看,當我點擊瀏覽器中的返回,然后再點擊提交,如此反復,仍然在重復調用Servlet,這也是重復提交
12.現在修改Index.jsp
13.修改servlet代碼
14.新建token文件,代碼如下
15.在瀏覽器中測試(注,這里如果再使用Eclipse自帶瀏覽器的話,會出現緩存問題,所以使用正常的瀏覽器火狐或者IE)
16.hidden中的token 和session中的token是相同的
17.當點擊瀏覽器中的后退按鈕,再次進行操作,發現不能重復提交
18.這是因為session中的token已經被移除掉了
19.而返回后刷新頁面,相當于新開一個index.jsp 重新獲取token 賦值給session,這時可以正常提交了

TA貢獻1801條經驗 獲得超8個贊
防止重復提交表單--按鈕變灰的代碼如下:
<script>
function disable()
{
document.form1.Submit.disabled=true;
}
</script>
<form name="form1" method="post" action="" onsubmit="disable()">
<p>
<input type="submit" name="Submit" value="提交">
</p>
</form>
- 5 回答
- 0 關注
- 1672 瀏覽
添加回答
舉報