Comment savoir si l'utilisateur a cliqué sur annuler lors d'un téléchargement à partir d'une servlet Java? Ce qui semble se passer pour moi avec IE, le flux de sortie des blocs println(). Le hit utilisé est annulé, mais y a-t-il un moyen de temporiser cela ou quelque chose comme ça?Comment pouvez-vous dire si l'utilisateur a cliqué sur annuler lors d'un téléchargement à partir d'une servlet Java?
Répondre
Wrap OutputStream#write()
, #flush()
et #close()
dans un bloc try-catch
sur IOException
. Si elle est interceptée, cela signifie généralement que l'utilisateur final a interrompu la requête.
Pour obtenir un peu plus loin, vous pouvez également prendre à une exception plus spécifique à servletcontainer comme ClientAbortException
sur Tomcat et des clones (qui est une sous-classe de IOException
), mais cela rendra votre code webapp à d'autres servletcontainers non portable.
Mise à jour: revenir sur la question de blocage, vous aimeriez appeler flush()
après avoir écrit un seul bloc de données. Cela va effectivement envoyer les données au client et provoquer IOException
lorsque le socket sous-jacent est fermé.
Vous ne serez pas en mesure de dire à coup sûr. Cela dépend de la façon dont votre conteneur de servlets est implémenté.
Lorsque l'utilisateur clique sur "Annuler", le navigateur doit fermer le socket. Cela sera détectable par le serveur, bien sûr, mais si le serveur a le ServletOutputStream
"plumbed" directement à OutputStream
de la socket dépend de l'implémentation. Si c'est le cas, un IOException
sera déclenché la prochaine fois que la servlet tentera d'écrire des données.
Si les tampons du conteneur sont sortis, le servlet peut terminer l'écriture des données sans jamais savoir que quelque chose a mal tourné.
Donc, vous dites que si le tampon est assez grand, il n'y aura pas d'exception IOException, car l'écriture ne bloquera pas. Cependant, je suppose que la couleur pourrait alors bloquer. –
- 1. Comment savoir si l'utilisateur a cliqué sur Annuler lors de l'appel des fonctions MSI?
- 2. Comment déterminer si l'utilisateur a cliqué sur OK ou sur ANNULER lors de la fermeture de Silverlight?
- 3. Annuler un téléchargement personnalisé Java Webstart
- 4. Comment détecter si l'utilisateur a cliqué sur le bouton "retour"
- 5. téléchargement de fichier asynchrone avec servlet Java
- 6. Comment forcer une invite de téléchargement, avant les données qu'elle a envoyées à partir d'une servlet?
- 7. Java Servlet Téléchargement d'images corrompu (fond gris)
- 8. Call servlet Java à partir d'Android
- 9. JSTL: Vérifier si Envoyer a été cliqué
- 10. Comment annuler l'effet jquery div si vous cliquez sur
- 11. comment vérifier si une image a cliqué dans php
- 12. Comment écrire "si non cliqué" ou "si cliqué sur l'élément extérieur", en utilisant Jquery?
- 13. Comment déterminer si quelque chose a été cliqué dans jQuery sur le premier chargement?
- 14. Java: Comment télécharger un fichier sur un serveur WebDAV à partir d'une servlet?
- 15. xsl: comment dire si une variable a été déclarée
- 16. Sur quel bouton a-t-on cliqué?
- 17. Traitement asynchrone en Java à partir d'une servlet
- 18. Lecture d'un fichier à partir de Java Servlet
- 19. Appel d'une servlet Java à partir de javascript
- 20. Servlet de fichiers de téléchargement multi-parties
- 21. Lors du développement pour un Tablet PC, comment déterminer si l'utilisateur a cliqué sur une souris ou un stylo?
- 22. java servlet: générer un fichier zip à partir de BLOBs
- 23. vérification de si cliqué + Jquery
- 24. comment puis-je savoir si quelqu'un a imprimé à partir de printPreview?
- 25. Comment dire à Java quel StringEscapeUtils.escapeXML() utiliser?
- 26. Problèmes lors du téléchargement de document à partir de Sharepoint à l'aide de JAVA
- 27. UIActivityIndicator problème lors du téléchargement à partir de l'URL
- 28. navigationController va/a ShowViewController - Comment dire quoi?
- 29. Comment déterminer si un paramètre a été "posté" ou "récupéré" à partir de Java?
- 30. Empêcher le téléchargement de DTD lors de l'utilisation de XSLT, c'est-à-dire XML Transformer
quelle serait la classe d'exception exacte? (Je suis paresseux pour ouvrir quelques fichiers journaux pour voir :)) – Bozho
@Bozho: J'ai ajouté quelques détails supplémentaires lors d'une modification rapide. C'est spécifique au servletcontainer. – BalusC
Ainsi, le fait de dire que write écrit une exception, quand il bloque, en raison de l'annulation d'un utilisateur. –