2009-08-24 2 views
0

J'utilise jsp pour écrire une application, et je rencontre un tel problème, que le navigateur mettra toujours en cache l'URL que j'exécute, donc quand l'utilisateur actualisera la page, l'action sera exécutée encore. par exemple: "> transférer; si j'ai cliqué sur le lien, et après cela, je rafraîchir la page, cette action sera exécutée à nouveau Je sais aussi, que je dois utiliser pour éviter ce problème, mais il est vraiment pas pratique.comment empêcher l'action reexecute lors de l'actualisation dans jsp

Quelqu'un a une meilleure solution? Toutes les suggestions seront appréciées. Merci à l'avance.

Répondre

0

Cette solution fonctionne avec Internet Explorer.

<script type="text/javascript"> 
    document.onkeydown = function(){ 
    if(window.event && window.event.keyCode == 116){ // Capture and remap F5 
     window.event.keyCode = 505; 
    } 
    if(window.event && window.event.keyCode == 505){ // New action for F5 
     return false; // Must return false or the browser will refresh anyway 
    } 
} 
</script> 
1

Vous avez généralement une forme variable cachée, qui a été généré sur la première demande et enregistré dans générez-le comme un nombre aléatoire

Puis , lors de la soumission, vous vérifiez ce champ masqué, et vérifiez la variable de session, et si la correspondance, le traiter et supprimer la variable de session. Par conséquent, si vous appuyez de nouveau sur le bouton, la même variable apparaîtra dans le formulaire, mais supprimée dans la session, ce qui vous permettra de détecter le cas de manière triviale.

0

Vous pouvez utiliser un objet connu sous le nom de jeton. Dans votre soumission de formulaire, incluez le numéro de jeton en tant qu'élément de formulaire caché. Lors de la génération de votre page, ajoutez ce jeton aléatoire à vos SESSIONS (dans un tableau). Maintenant, lors de la soumission du formulaire, vérifiez si le jeton aléatoire existe dans le tableau SESSION, si oui, supprimez-le et continuez. Si non, alors lancez une erreur.

Questions connexes