IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

[Info]Bloquer la touche F5 [FAQ]


Sujet :

Développement Web en Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Par défaut [Info]Bloquer la touche F5
    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

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Par défaut Bloquer la touche F5
    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

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Par défaut
    Merci ça répond tout à fait à mon problème

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut Re: Bloquer la touche F5
    Citation Envoyé par willy78
    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
    Salut,
    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 !!!

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Par défaut
    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

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    Citation Envoyé par willy78
    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
    Tres clair merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment bloquer la touche précédente du navigateur?
    Par shnouf dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/01/2006, 10h44
  2. Bloquer des touches
    Par 12_darte_12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/12/2005, 17h54
  3. Bloquer des touches
    Par [Silk] dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 26/10/2005, 11h46
  4. Réponses: 1
    Dernier message: 22/09/2005, 20h46
  5. [MFC] Comment bloquer lma touche maximiser?
    Par xs_nady dans le forum MFC
    Réponses: 2
    Dernier message: 14/06/2004, 20h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo