5 回答

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

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
防止重復(fù)提交表單--按鈕變灰的代碼如下:
<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>
添加回答
舉報(bào)