1 javascript, atur variabel dan hanya izinkan pengiriman satu kali.
var checkSubmitFlg = salah;
fungsi checkSubmit() {
if (checkSubmitFlg == benar) {
kembali
salah;
}
checkSubmitFlg = benar
}
dokumen.ondblclick = fungsi docondblclick() {
window.event
.returnValue=
false;
}
document.onclick = function doconclick() {
if
(checkSubmitFlg) {
window.event.returnValue = false
;
2 Masih menggunakan javascript, setel tombol kirim atau gambar untuk menonaktifkan
onsubmit="getElById('submitInput').disabled = true; return true;"> < / html:form> 3 Gunakan mekanisme token sinkronisasi struts untuk menyelesaikan masalah pengiriman berulang dalam aplikasi web. Struts juga menyediakan implementasi referensi. Prinsip dasar: Sebelum memproses permintaan masuk, server akan membandingkan nilai token yang terdapat dalam permintaan dengan nilai token yang disimpan dalam sesi pengguna saat ini untuk melihat apakah ada kecocokan. Setelah permintaan diproses dan sebelum balasan dikirim ke klien, token baru akan dibuat. Selain diteruskan ke klien, token ini juga akan menggantikan token lama yang disimpan di sesi pengguna. Dengan cara ini, jika pengguna kembali ke halaman pengiriman sebelumnya dan mengirimkan lagi, token yang diteruskan oleh klien akan tidak konsisten dengan token di sisi server, sehingga secara efektif mencegah pengiriman berulang. if (isTokenValid(request, true)) { // kode Anda di sini return maping.findForward("success"); else { saveToken (request); maping.findForward ("submitagain"); ID dan Waktu sistem saat ini digunakan untuk menghasilkan token unik (untuk setiap sesi). Untuk implementasi spesifik, lihat metode generateToken() di kelas TokenProcessor. 1. menghasilkan token perwakilan input implisit berdasarkan pengidentifikasi dalam sesi untuk mencegah pengiriman ganda. nama ="org.apache.struts.taglib.html.TOKEN" // value="6aa35341f25184fd996c4c918255c3ae"> if (!isTokenValid(request)) error.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.transaction.token") ) ; resetToken(request); //Hapus token di sesi 3. Tindakan memiliki metode untuk menghasilkan token ( HttpServletRequest request) { HttpSession session = request.getSession() ; ().getBytes(); byte sekarang[] = new Long(System.currentTimeMillis()).toString().getBytes(); MessageDigest md = MessageDigest.getInstance("MD5"); .update(sekarang); kembali (toHex(md.digest())); } tangkapan (IllegalStateException e) { kembali (null); } tangkapan (NoSuchAlgorithmException e) { kembali (null ) ;