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

Servlets/JSP Java Discussion :

notification update image


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut notification update image
    bonjour à tous,
    mon souci consiste à appeler une servelt qui sert à afficher une image dynamiquement, mais tant de fois l'image est la même donc ça sert à rien de la renvoyer au navigateur tant qu'elle n'a pas changé
    c'est pour ça, je veux en premier temps tester si l'image (son nom, son id..n'importe quoi) est modifié, si oui alors une autre requête pour l'afficher sinon on garde l'ancien affichage (ainsi on a gagner quelques ko )
    bon la première chose qui me vienne à l'esprit est la session
    pour commencer,je récupère ma variable mais le hic c'est comment récupérer l'ancienne variable (a laquelle je vais la comparer )??
    autre chose, est il différent de faire cette comparaison dans la servlet ou dans la page jsp?

    merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Pourquoi réinventer la roue, elle existe déjà sous la forme d'une méthode portant le nom de "getLastModified".

    Par exemple: renvoie la date de la dernière modification du fichier.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    Bonjour,
    bah moi je suis satisfaite de l'autre méthode mais malheureusement on m'exige, afin d'optimiser de ré-afficher l'image seulement si elle est modifié, sinon on garde celle déja affichée (économiser en octets) donc en premier temps je dois interroger le serveur s'il y a une nouvelle nouvelle si oui on l'affiche genre ce scénario:
    c->s:any update for pic?
    s->c:yes
    c->s: send me last pic
    s->c: send last pic
    c->s: any update for pic?
    s->c: no
    c: keep last display

    j'ai pensé aussi d'utiliser ajax mais presque tout les bouts de code que j'ai trouvé tournent autour le refresh des formulaires ( en fait sous des données xml soit text)

  4. #4
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Ma méthode ne t'a pas convaincu?

    Tu n'as "qu'à surcharger" la méthode getLastModified de ta servlet.

    c->s: GET pictureOne
    s->c: SEND Data pictureOne Status 200 Modified:25/05/2010/10:07:13

    c->s: GET pictureOne Status 200 If-Modified-Since:25/05/2010/10:07:13

    Deux réponses possibles du serveur
    s->c: Send Status 304 (Image Pas modifiée): le client ne ré-affiche pas l'image
    s->c: SEND Data pictureOne Status 200 If-Modified-Since:25/05/2010/10:11:47
    (Image modifiée): le client affiche la nouvelle image

    Tout ceci est géré par le navigateur (comportement standard du protocole HTTP)

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    j'ai fait cet essai la, bon je suis sure que ça manque tas de chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     lastSlide= list[list.length-1];
        String var= (String) session.getAttribute("lastSlide") ;
        long longvar = 0;
        try{
         longvar = Long.parseLong(var);}
        catch (java.lang.NumberFormatException ex){ System.out.println(ex);}
        boolean anyUpdate;
        anyUpdate= lastSlide.lastModified()== longvar ;
        if (anyUpdate)
        session.setAttribute("lastSlide",lastSlide.lastModified());
     session.setAttribute("anyUpdate", anyUpdate);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    last slide: <% Long a = (Long)session.getAttribute("lastSlide"); %>
            anyUpdate : <% Boolean b = (Boolean)session.getAttribute("anyUpdate"); %>
    maintenant je verrai l'histoire de surchage de getLastModified

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    salut,
    pouvez vous svp jetter un coup d'oeil sur ce code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
     public long getLastModified(HttpServletRequest request)
      {return lastSlide.lastModified()/1000*1000;}
     
     protected boolean checkIfModifiedSince(HttpServletRequest request,HttpServletResponse response  /*,ResourceAttributes resourceAttributes*/)
                  throws IOException {
                   try {
                       long headerValue = request.getDateHeader("If-Modified-Since");
                      long lastModified = getLastModified(request);
                       if (headerValue != -1) {
     
                          // If an If-None-Match header has been specified, if modified since
                           // is ignored.
                          if ((request.getHeader("If-None-Match") == null)
                              && (lastModified < headerValue + 1000)) {
                              // The entity has not been modified since the date
                             // specified by the client. This is not an error case.
                              response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
                              response.setDateHeader("Last-Modified", System.currentTimeMillis()); // Now
                              //response.setHeader("ETag", resourceAttributes.getETag());
     
                               return false;
                           }
                       }
                   } catch (IllegalArgumentException illegalArgument) {
                       return true;
                   }
                   return true;
     
              }
    pleins de trucs ne sont pas claires dans ma tete
    primo comment faire comprendre au serveur d'invoquer cette methode de test periodiquement, ok lors d'une requet..mais lors une requete in lit directement le doGet! alors toute cette bidouille afin d'éviter de lire la doGet pour ne pas ré-afficher l'image
    de plus si je va pas appeler ce boolean retourné dans la doGet, alors ou dois-je l'appler
    ça c'est d'une part, d'autre part, coté jsp comment doit'on gérer ça?

    ça me semble floue en tant que étapes d'exéction

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

Discussions similaires

  1. [MySQL] update image blob php et mysql
    Par chaker176 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/03/2015, 20h43
  2. Envoi d'une image sur un serveur + update table
    Par rickways dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/06/2007, 20h15
  3. [c#] ListView affichant des images updates en temps reel
    Par elguignardo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/05/2006, 11h49
  4. Notification de redémarrage après windows Update.
    Par genialk2000 dans le forum Sécurité
    Réponses: 2
    Dernier message: 22/02/2006, 15h12
  5. [MySQL] pb upload image et update table
    Par digger dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/11/2005, 14h09

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