Bonjour,
je développe une application en java et je souhaite empêcher l'execution d'une servlet ou d'une JSP par la touche F5.
Comment faire?
Merci d'avance
[Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java
Bonjour,
je développe une application en java et je souhaite empêcher l'execution d'une servlet ou d'une JSP par la touche F5.
Comment faire?
Merci d'avance
[Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java
Bonjour
La touche F5 ne peut pas être désactivée. Je suppose que ton problème est d'eviter de refaire un traitement couteux lorsque l'utilisateur fait un reload.
Si par exemple tu utilises une application de type MVC1 (traitement dans une servlet puis forward vers JSP), et que ton traitement dans la servlet est long ou couteux, tu peux utiliser HttpServletResponse.sendRedirect au lieu d'un RequestDispatcher.forward vers la vue. Ainsi lors d'un refresh, seule la vue (la jsp) sera rechargée, mais la servlet ne sera pas re-executé.
Si tu utilise struts, il suffit de positionner l'attibut forward du mapping à false pour obtenir le même comportement.
Cordialement
Merci ça répond tout à fait à mon problème
Salut,Envoyé par willy78
Je comprend pas , et j'aimerais comprendre en quoi cette solution est bonne !!!:
Pour moi la difference entre le sendRedirect et le requestDispatcher c'est que le premier renvoie vers une URL en creant une nouvelle request alords que l'autre conserve la meme requete .
Donc si la servlet fait des traitement necessaire pour l'affichage , la servlet est obligé de s'executer non et ensuite de faire un requestDispatcher non ??
et puis comment faire un sendRedirect aux deuxieme passage et pas au premier , comment determiner que le deuxieme passage est un F5 du meme utilisateur et pas le passage d'un autre utilisateur ???
Enfin bref je comprend pas et j'aimerais comprendre !!!![]()
Bonjour,
Lorsque la servlet a fini le traitement, avec un forward, c'est le serveur d'application qui va envoyer sur la même requête le contenue de la JSP. D'un point de vue client l'url de la jsp n'est jamais visible:
---req-->traitement---->vue--> response avec code http 200
Lorsque le client fait un reload c'est l'url de la servlet qui est appellée
pour le redirect, en fin de traitement, le serveur d'application envoie un code HTTP 302 avec un entête http location qui contient l'url de la jsp. le navigateur va être redirigé vers cette url (d'ou le nom) .
on a:
---req-->traitement---->reponse 302 location: url de la jsp
puis
---req-->reponse de la jsp.
Lorsque on recharge la page seule la jsp est rechargée.
l'inconvenient c'est qu'on ne peut pas ajouter de paramètres sur la request=> la vue doit être batie sur des données en session uniquement
j'espère avoir été clair
Cordialement
Partager