1 javascript, définissez une variable et n'autorisez la soumission qu'une seule fois.
var checkSubmitFlg = false;
function checkSubmit() {
if (checkSubmitFlg == true) {
return false
}
checkSubmitFlg = true
}
document.ondblclick
= function docondblclick() {
window.event .returnValue = false;
}
document.onclick = function doconclick() {
if (checkSubmitFlg) {
window.event.returnValue = false
}
}
2 Toujours en utilisant javascript, définissez le bouton ou l'image de soumission pour désactiver
onsubmit="getElById('submitInput').disabled = true; return true;"> < / html:form> 3 Utilisez le mécanisme de jeton de synchronisation de struts pour résoudre le problème des soumissions répétées dans les applications Web. Struts fournit également une implémentation de référence. Principe de base : Avant de traiter une requête entrante, le serveur comparera la valeur du token contenue dans la requête avec la valeur du token enregistrée dans la session utilisateur en cours pour voir s'il y a une correspondance. Une fois la demande traitée et avant l'envoi de la réponse au client, un nouveau token sera généré. En plus d'être transmis au client, ce token remplacera également l'ancien token enregistré dans la session utilisateur. De cette façon, si l'utilisateur revient à la page de soumission précédente et soumet à nouveau, le jeton transmis par le client sera incohérent avec le jeton côté serveur, empêchant ainsi efficacement les soumissions répétées. if (isTokenValid(request, true)) { // votre code ici return mapping.findForward("success"); } else { saveToken(request); mapping.findForward ("submitagain"); ID et L'heure système actuelle est utilisée pour générer un jeton unique (pour chaque session). Pour une implémentation spécifique, veuillez vous référer à la méthode generateToken() dans la classe TokenProcessor. 1. //Vérifiez le jeton de contrôle de transaction. 2. Dans l'action : // // value="6aa35341f25184fd996c4c918255c3ae"> if (!isTokenValid(request)) error.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.transaction.token") ) ; resetToken(request); //Supprimer le jeton dans la session 3. L'action a une méthode pour générer un jeton protégé String generateToken(HttpServletRequest request) { HttpSession session = request.getSession() ; ().getBytes(); octet maintenant[] = ( )).toString().getBytes(); MessageDigest.getInstance ("MD5") .update(maintenant); ( md.digest())); } catch (IllegalStateException e) { return (null } catch (NoSuchAlgorithmException e) { return (null) ;