1 JavaScript、変数を設定し、送信を 1 回だけ許可します。
var checkSubmitFlg = false;
function checkSubmit() {
if (checkSubmitFlg == true) {
return
false;
}
checkSubmitFlg = true
}
document.ondblclick
= function docondblclick() {
.returnValue = false;
}
document.onclick
= function doconclick() {
if (checkSubmitFlg) {
window.event.returnValue = false
;
}
2 引き続き JavaScript を使用している場合は、送信ボタンまたは画像を無効に設定します
onsubmit="getElById('submitInput').disabled = true; return true;"> < / html:form> 3 Struts の同期トークン メカニズムを使用して、 Web アプリケーションでの繰り返し送信の問題を解決します。Struts はリファレンス実装も提供します。 基本原則: 受信リクエストを処理する前に、サーバーはリクエストに含まれるトークン値と現在のユーザー セッションに保存されているトークン値を比較し、一致するかどうかを確認します。リクエストが処理された後、応答がクライアントに送信される前に、新しいトークンが生成され、クライアントに渡されるだけでなく、このトークンはユーザー セッションに保存されている古いトークンも置き換えます。このようにして、ユーザーが前の送信ページに戻って再度送信した場合、クライアントから渡されたトークンはサーバー側のトークンと一致しないため、繰り返しの送信が効果的に防止されます。 if (isTokenValid(request, true)) { // ここでのコード returnmapping.findForward("success"); } else { saveToken(request) ; } ユーザーセッションに基づく Struts ID と現在のシステム時刻は、一意の (セッションごとに) トークンを生成するために使用されます。具体的な実装については、TokenProcessor クラスのgenerateToken() メソッドを参照してください。 、 二重送信を防ぐために、セッション内の識別子に基づいて暗黙的な入力代表トークンを自動的に生成します。 // // value="6aa35341f25184fd996c4c918255c3ae"> if (!isTokenValid(request)) errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.transaction.token") ) ; resetToken(request); //セッション 3 のトークンを削除します。アクションにはトークンを生成するメソッドがあります。 protected StringgenerateToken( HttpSession session = request.getSession()) { byte id[] = session .getId ().getBytes(); バイト now[] = ( )).toString().getBytes(); MessageDigest.getInstance ("MD5") .update(now); ( md.digest())); IllegalStateException e ) { ( null); }